Test runner: PHPUnit 4.x, skipped dependents, vendor/

Mostly fixing bogus test statuses of 'T'
- Updated patterns for PHPUnit 4.x
- Deal with skipped tests with dependencies (output ~= /^SS+$/, not /^S$/)
- Don't test vendor/

Reviewed By: @ptarjan

Differential Revision: D1214601
Improved Redis Support

I have added support for the Redis 2.6.12+ extended SET (http://redis.io/commands/set) options, as well as the Redis 'watch' command http://redis.io/commands/watch.

However, the use of the watch command seems to cause the multi/exec functionality to hang until connection times out when the key has been changed after being watched. I believe this to be a bug in the handling multi/exec, as all commands in the tests succeed on the server, as witnessed through a redis-cli monitor.

Closes #1998

Reviewed By: @sgolemon

Differential Revision: D1210803
fix DOMDocument simplexml import

Due to the SimpleXML rewrite, the internal node property has changed.

php-src instead grabs the node from the object, and on top of that
calls an export function that in some circumstances will return the
node's children instead:
https://github.com/php/php-src/blob/PHP-5.6/ext/simplexml/simplexml.c#L2434

Closes #2030
Closes #2029

Reviewed By: @fredemmott

Differential Revision: D1214227

Pulled By: @sgolemon
Add DateTimeImmutable

- Add class
- Make a whole load of global functions work with any DateTimeInterface
- Modify ==, <, and >. sadpanda
- Find tests

Some of the other Zend tests won't pass due to #958

Reviewed By: @ptarjan

Differential Revision: D1207305
Minor cleanup in ConstSrcTable::table

- Don't require Nop to be the last opcode
- Use MaxSrc for the second dimension instead of 8

Reviewed By: @edwinsmith

Differential Revision: D1214029
Have a case for DecRefLoc in SinkPointAnalyzer::processInst

It wasn't treating it as consuming a ref count on the local, and would
hit an assert.

Reviewed By: @swtaarrs

Differential Revision: D1213678
Report JSON_ERROR_UTF8 in json_encode.

Properly raise error code.

Closes #2015
Closes #1959

Reviewed By: @fredemmott

Differential Revision: D1214336

Pulled By: @sgolemon
Handle null length arg correctly in mb_substr() and mb_strcut()

null should indicate "whole string"

Closes #2016

Reviewed By: @fredemmott

Differential Revision: D1214435
Allow uniqid() to produce output longer than 255 characters

$prefix can be arbitrarily long,
but only 255 characters were reserved for output.
This means that if a prefix > 255 characters was
provided, the output would be constant: substr($prefix, 0, 255)

Closes #2034

Reviewed By: @ptarjan

Differential Revision: D1214712
Check boundaries of memcached::setOption() before calling

Passing an out-of-range option will segfault us.

Closes #2008

Reviewed By: @ptarjan

Differential Revision: D1214774