Properly set timezone in core.php

Prior to this, core.php would trigger a PHP warning on PHP >= 5.3 when
date_default_timezone_get() is not able to determine the timezone and
defaults to UTC (e.g. when php.ini date.timezone is not set).

The logic to determine the timezone was changed slightly:
- remove RHEL/CentOS-specific check as it only applies to PHP 5.1
  (we require 5.3 minimum)
- suppress errors when calling date_default_timezone_get()
- call date_default_timezone_set() to avoid further warnings
- fix detection of admin check scripts

Fixes #17747
Update documentation for $g_default_timezone
Revised admin check for $g_default_timezone

- Clarification of messages, added links to PHP documentation
- When default timezone is null, issue warning instead of failure and
  indicate defaulting to UTC
Move current timezone init code to date API

A new API function date_set_current_timezone() was created to handle
timezone initialization