Allow arbitrary expressions for empty()

This change is as per RFC https://wiki.php.net/rfc/empty_isset_exprs.

The change allows passing the result of function calls and other
expressions to the empty() language construct. This is accomplished by
simply rewriting empty(expr) to !expr.

The change does not affect the suppression of errors when using empty()
on variables. empty($undefinedVar) will continue not to throw errors.
When an expression is used inside empty() on the other hand, errors will
not be suppressed. Thus empty($undefinedVar + $somethingElse) *will*
throw a notice.

The change also does not make empty() into a real function, so using
'empty' as a callback is still not possible.

In addition to the empty() changes the commit adds nicer error messages
when isset() is used on function call results or other expressions.
Dummy (whitespace) change so Dan Brown can verify snap generation from git

PHP snapshots were still pulling from SVN and were out of date. This
is a dummy PHP 5.4-only commit so Dan can verify what he's updated for
git in the backend.
Accept DateTimeZone where time zones are expected.

Also unified timezone handling in IntlCalendar::setTimeZone()
to that in the IntlCalendar and IntlGregorianCalendar constructors.
Added IntlCalendar::fromDateTime()

IntlCalendar::fromDateTime(DateTime|string $dateTime[, string $locale)
intlcal_from_date_time(...)

If a string is given as the first argument, the method will try to
instantiate a new DateTime object and use that instead.
Fixed two IntlCalendar::setTimeZone() tests.
Added IntlTimeZone::fromDateTimeZone() and ::toDateTimeZone.

IntlTimeZone::fromDateTimeZone(DateTimeZone $dtz) converts from an
ext/date TimeZone to an IntlTimeZone. The conversion is done by feeding
the time zone name (essentially what would be given by
DateTimeZone::getName()) to ICU's TimeZone::createTimeZone except if it's
an offset time zone. In that case, the offset is read from the ext/date
time zone object structure and an appopriate id (of the form
GMT<+|-><HH:MM>) is given to ICU's TimeZone::createTimeZone. Not all
ext/date time zones are recognized for ICU. For instance, WEST is not.
Note that these kind of abbreviations, as far as I can tell, can only be
created via ext/date DateTime, not directly through DateTimeZone's
constructor.

For IntlTimeZone::toDateTimeZone(), the behavior is symmetrical.
We instantiate a DateTimeZone and then call its constructor if we don't
have an offset time zone, otherwise we mess with its structure. If the
timezone is not valid for ext/date, then we allow the exception of
DateTimeZone constructor to propagate.
Whitespace.
Handle bogus string in intl_charFromString().
Bug #58756: w.r.t MessageFormatter (partial fix)

I don't think the current ICU API allows this bug to be completely fixed.

Right now, the code cannot control the time zone used in date/time formats
that appear inside complex subformats. See the comment inside
umsg_set_timezone().
Merge branch 'intl_format_tz' into intl_calendar
MessageFormatter accepts IntlCalendar arguments

Now MessageFormatter::format() accepts IntlCalendar objects to be used in
arguments of type Format::kDate.
Fixed bad DateTime construction state check
Fixed a couple of memory leaks
Added IntlCalendar::toDateTime()
- Fixed bug #62064 (memory leak in the XML Writer module)
Merge branch 'PHP-5.3' into PHP-5.4

* PHP-5.3:
  - Fixed bug #62064 (memory leak in the XML Writer module)
- BFN
- BFN
Fix: 62067 Moved comments to FILE section
Fix: 62067 Moved comments to FILE section