Fix some bugs in hhbbc support for http_response_code, php_errormsg

Summary: It was neglecting to handle parameters with volatile names when
creating function entry states.  So it would assert as soon as it analyzed the
first use of the parameter (e.g. the VerifyParamType).

Reviewed By: @bertmaher

Differential Revision: D1662140

Signature: t1:1662140:1415342486:8e945a41eb01d77251ba7dc79029982d79ed1bd8
Fix mysqli_options. Stop asserting.

Summary: D1660924 eliminated defaults in datatype switches. This started causing
assertions on 5 good zend tests.

P17123886

The reason is because no matter what happened in the switch, we would always hit
`not_reached()`. That's not right. :)

So use a `goto` to make sure we can get out gracefully if we hit a valid data
type.

Reviewed By: @paulbiss

Differential Revision: D1668749

Signature: t1:1668749:1415686958:5ebffda9dbbc4676c1290329f28ae0fedc300bd0
Honor the Redis timeout

Summary: The timeout is there to make sure we don't sit too long without having anything to
read. This wasn't being honored; so waiting to read a non-existent key would go
on indefinitely.

Fixes #3094

Reviewed By: @sgolemon

Differential Revision: D1667533

Signature: t1:1667533:1415414331:208ce6076688321dd92b0dc19d63bdaa12793e61
implement custom propEmpty logic for SimpleXML

Summary: The PHP documentation for empty() says the following:
"That means empty() is essentially the concise equivalent to
!isset($var) || $var == false."

Surprise surprise, SimpleXML doesn't work that way:
$xml = new SimpleXMLElement('<foo><bar/></foo>');
var_dump(isset($xml->bar));  // true
var_dump((bool)($xml->bar)); // true
var_dump(empty($xml->bar));  // true, wat?!

To solve this, we do the same thing as ObjectData::clone by
defining an HasPropEmpty attribute and checking for it in
ObjectData::propEmpty.
Closes https://github.com/facebook/hhvm/pull/4204

Reviewed By: @JoelMarcey

Differential Revision: D1672895

Signature: t1:1672895:1415741237:a4b8ab13ab654ea5dcba64aefe907b5889079028