[feature/new-tz-handling] Wrapper around DateTime for new date time handling.

Wrapped PHP's DateTime with some extensions for supporting phpBB's relative
date formats and provided the DateTime::getTimestamp() method to PHP < 5.3.

PHPBB3-9558
[feature/new-tz-handling] Use phpbb_datetime rather than phpbb_DateTime.

PHPBB3-9558
[feature/new-tz-handling] Renamed old variables and removed extra conditional.

PHPBB3-9558
[feature/new-tz-handling] Update user methods to use new date processing class.

user::setup() now stores a DateTimeZone object in user::$timezone representing
the users timezone. For backwards compatibility a numeric value in
user/board_timezone will be converted into one of the legacy Etc/GMT±X
timezones. This will be used until the user updates his/her timezone in the
UCP.

user::format_date() is now basically a legacy wrapper that transforms a UTC
UNIX timestamp into a formatted localised date using phpbb_datetime::format().

PHPBB3-9558
[feature/new-tz-handling] Correct capitalisation of phpbb_datetime.

PHPBB3-9558
[feature/new-tz-handling] Remove old user::$dst property

PHPBB3-9558
[feature/new-tz-handling] Replace user::$timezone with user::$tz.

user::$tz will store the new DateTimeZone object representing the users
timezone instead of the existing user::$timezone and user::$dst combination.

PHPBB3-9558
[feature/new-tz-handling] Added a user::create_datetime() method.

New method which handles instantiating new phpbb_datetime objects in
the context of the current user.

PHPBB3-9558
[feature/new-tz-handling] Fixed bug with signature of user::create_datetime().

First argument to user::create_datetime() should be optional.

PHPBB3-9558
[feature/new-tz-handling] Correct typo in member comment.

PHPBB3-9558
[feature/new-tz-handling] Comment and optimise phpbb_datetime::format().

- Added comments explaining the complex time computations for rendering
  relative date times.

- Replaced some repeated method invokations with variables.

PHPBB3-9558
[feature/new-tz-handling] Added phpbb_datetime::__toString().

New phpbb_datetime::__toString() magic method that formats the datetime
according to the users default settings.

PHPBB3-9558
[feature/new-tz-handling] Explained name of phpbb_datetime::getTimestamp()

phpbb_datetime::getTimestamp() exists purely to support PHP 5.2 which
does not implement the method.

PHPBB3-9558
[feature/new-tz-handling] Fix undefined variable.

PHPBB3-9558
[feature/new-tz-handling] Check the is_short flag stored inside the format array.

Reuse the existing check store in the format array to determine if the date time
format supports relative formatting.

PHPBB3-9558
[feature/new-tz-handling] Fix bug from 3.0 formatting future dates.

Future dates can get formatted as 'less than a minute ago' if they
occur in the future on the same minute as the current minute.

PHPBB3-9558 PHPBB3-9712
[feature/new-tz-handling] Removed line that was missed in cc312d8.

PHPBB3-9558
[feature/new-tz-handling] Modify database schemas.

- Dropped the user_dst column which is no longer required.
- Modified the user_timezone column to take a string, max length 100.

PHPBB3-9558
[feature/new-tz-handling] Remove code using legacy timezone properties.

Code accessing the legacy user::$timezone and user::$dst properties
has been removed and replaced with code utilising user::create_datetime().

Changed by Oleg:

in viewtopic, memberlist and index use getTimestamp() + getOffset().

We show members that have birthdays on the specified date.

getTimestamp() returns the current date in UTC. We add getOffset() to
obtain the current local time in the viewing user's timezone.
Then we find members having birthday on this date.

PHPBB3-9558
[feature/new-tz-handling] Update tz_select() to use the PHP timezone database.

tz_select() now uses the PHP timezone database to generate the timezone
selection box, it tries to use a translated language string otherwise falls
back to a label produced from the timezone identifier. I've done this so
new timezones are available immediately without a new language pack.

PHPBB3-9558