WL#1872: Add support for dates from 2038 till 2116 as values of TIMESTAMP type

Affects: Server-7.0   —   Status: Un-Assigned

We need to support dates from year 2038 till year 2116 as values of TIMESTAMP 

Currently we support only dates between 1970 to 2038 as values for TIMESTAMP
type, this is mostly because on some systems (e.g. linux) time_t is signed so
system time handling functions does not support dates bigger than 2038 (and
time_t is internal representation of TIMESTAMP type.

Since now thank to Task #1264 "Per thread time zone infrastructure" we mostly
use our own functions for TIME to/from time_t conversion we can treat internal
value of TIMESTAMP type as unsigned and so handle dates bigger than year 2038.
(BTW we can't extend TIMESTAMP range downwards since time_t value 0 has special
meaning for us so we can't handle datetime value equivalent to '1970-01-01
00:00:00 UTC')

For doing this we need to solve two problems:

1) We should handle situation when user is using system functions for working
with TIMESTAMP column (by using special SYSTEM time zone) on system which can't
handle datetime values in extended range (e.g. with signed time_t) by using
special 0 datetime value or NULL as indication of problem.
2) Since on many systems compiled zoneinfo files doesn't contain information
about transitions beyound year 2038 we will have problems with filling time
zone description tables for those periods. We should solve it by adopting
standard utility (in public domain) - zoneinfo compiler (zic) for directly
producing contents of time zone tables with support for dates beyound 2038.

BUG#12654 is related to this (handling 64-bit timestamp range).