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

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
[feature/new-tz-handling] Remove case mangling, the identifiers are correct.

PHPBB3-9558
[feature/new-tz-handling] Correct a bug preventing multiple formats working.

PHPBB3-9558
[feature/new-tz-handling] Sort timezones in selector by offset.

Since the list of timezones is very long, and users are likely
to know their current offset but not necessarily which city
that is nearby is in the timezone database, sort the list of
timezones by offset.

UTC is specially handled to show up before other GMT+0 timezones.

PHPBB3-9558
[feature/new-tz-handling] Preselect a timezone in registration.

Use Javascript to obtain client's timezone offset and select the
first timezone in our list with that offset.

Changes for prosilver only. The javascript file should be shared
between styles.

PHPBB3-9558
[feature/new-tz-handling] Removed DST options from templates.

PHPBB3-9558
[feature/new-tz-handling] Removed DST and numeric timezone-related language.

PHPBB3-9558
[feature/new-tz-handling] Started on database updater changes.

The changes are tricky since we need to drop user_dst column from
users table, but we need it during the data migration process to
properly calculate effective timezones for all users.

The change here converts user_timezone to vchar and computes
timezone identifiers from the offsets. It uses database-specific
functions for building SQL conditionals and concatenations which
need to be implemented, probably in a separate ticket. As a result
the current code is not functional.

PHPBB3-9558