Fixed bug #65768: DateTimeImmutable::diff does not work

This commit also prevents user classes from directly implementing
DateTimeInterface, because ext/date relies on classes implementing
it to support certain internal structures.
Merge branch 'PHP-5.5' into PHP-5.6
Merge branch 'PHP-5.6'
Fixed unused value compiler warning
Merge branch 'PHP-5.6'
Fixed bug #66041: list() fails to unpack yielded ArrayAccess object

Yield return values now use IS_VAR rather than IS_TMP_VAR. This
fixes the issue with list() and should also be faster as it avoids
doing a zval copy.
Cleanup generator closing code a bit

All code dealing with unfinished execution cleanup is now in a separate
function (previously most of it was run even when execution was properly
finished.

Furthermore some code dealing with unclean shutdowns has been removed,
which is no longer necessary, because we no longer try to clean up in
this case.
Merge branch 'PHP-5.5' into PHP-5.6
Merge branch 'PHP-5.6'
- Fixed bug #65923 (ext/socket assumes AI_V4MAPPED is defined)
Merge branch 'PHP-5.5' into PHP-5.6

* PHP-5.5:
  - Fixed bug #65923 (ext/socket assumes AI_V4MAPPED is defined)
Merge branch 'PHP-5.6'

* PHP-5.6:
  - Fixed bug #65923 (ext/socket assumes AI_V4MAPPED is defined)
Merge branch 'master' of git.php.net:/php-src
Merge branch 'master' into str_size_and_int64

Conflicts:
	ext/date/php_date.c