[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] 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().

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] 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