Allocate SIMD regs for doubles on ARM

Turns out vixl already had gpr<->simd and simd<->mem instructions for
the uses cases we need. This was just a matter of making the SIMD
registers available to the register allocator and handling them in a few
places in codegen.

We're not allocating SIMD registers to hold Cells yet. vixl has no
support at all for 128-bit-wide SIMD registers, so I'll have to
implement that separately. This diff also doesn't add support for
passing doubles to builtins on ARM; that'll come next.

I also got rid of some now-useless isConst handling from ARM codegen.

Reviewed By: @edwinsmith

Differential Revision: D1262941
Make translateRegion follow the arcs specified in the region

With bytecode control flow enabled, translateRegion was considering
all the arcs in the entire subgraph induced by the region blocks as
being part of the region. This diff changes translateRegion to
actually follow the arcs specified in the region.

This diff also adds support for regions containing multiple blocks
corresponding to the same SrcKey.

Reviewed By: @bertmaher

Differential Revision: D1256319
Convert Zend compatibility layer to HNI

* Convert zend compat to HNI
* Remove support for IDL-based zend compat extensions. It would have been more work to support it than to remove it, so Sara said it was OK to remove it.
* Convert existing extensions to HNI, writing their ext_*.php files, with a little bit of help from Sara Golemon's idl-to-hni.php. The files were extensively edited after they were generated.
* If MINIT is going to register function pointers for Native, then it needs to be done pre-compile. But that means that HPHP::Class pointers will generally not be available during MINIT. Lazy-load them instead.
* A few places were using ce->hphp_class just to get the class name. That's really not necessary, since ce->name has a pointer to the data of the exact same static string.
* Added FIXME note to totally broken zend_lookup_class()
* Updated documentation
* Do not register pcre_zend_compat as an actual extension, because REGISTER_LONG_CONSTANT() etc. is no longer a no-op, and causes duplicate definition warnings at runtime.
Closes #2276

Reviewed By: @sgolemon

Differential Revision: D1253812
Test runner improvements for guzzle

- run sequentially - the tests spawn a server on a fixed port which they share.
- set PHP_BINARY as they're on phpunit 3.x

Reviewed By: @JoelMarcey

Differential Revision: D1265597
Remove invalid memory usage check

This check succeeds under interp, but fails under the JIT (both under my
pseudomain diff and if wrapping it under a main function).

Reviewed By: @ptarjan

Differential Revision: D1265975
Clean up and document ArrayData function table a bit

Consolidate the shared functions in ArrayCommon, and document
the behavior of each entry point.  (ArrayCommon is pre-emptively a
struct so it can be friends of things, but so far it didn't actually
need any of that.)

Since all the virtuals are exposed as public functions I'll probably
move the documentation to the header at some point, but I didn't do
that yet.  (I feel like ArrayData really needs its own cleanup pass,
at which point we can pull the docs up there.)

There were at least two places where the array functions table was
wrong.  One is fixed in D1261567, the other looked older and only
fixed in this diff: AppendWithRef called the wrong function for
APCLocalArray, NameValueTableWrapper, and ProxyArray.

Reviewed By: @dariorussi

Differential Revision: D1261653
Rename HphpArray to MixedArray

Reviewed By: @alexmalyshev

Differential Revision: D1261665
Move MixedArray::GetStaticEmptyArray to a non-member function

It looks even more out of place than it used to after the
rename.

Reviewed By: @swtaarrs

Differential Revision: D1261676
Remove const on Variant& from setRef and appendRef functions

They modify the variant (convert it to KindOfRef), which
isn't what "const" means.  Likely historically used to be able to bind
to temporaries.

Reviewed By: @ptarjan

Differential Revision: D1262400
Fix a place in ext_xml that boxes Variants returned by GetValueRef

It's not legal to modify the Variant returned from
GetValueRef.

Reviewed By: @ptarjan

Differential Revision: D1263139
Audit calls to secondRef to ensure no one changes the Variant

Reviewed By: @ptarjan

Differential Revision: D1263540
Corrected framework runner script to correctly list all the available frameworks

The script incorrectly listed all framework overrides instead of all frameworks from yaml. This diff corrects this.

Reviewed By: @JoelMarcey

Differential Revision: D1263642
Simplify return opcode implementation

The bytecode and jit implementations of Ret{C,V} opcodes were
inconsistent wrt EventHook::FunctionExit handling. The jit
implementation called the hook while the environment was inconsistent
(FP pointing to ActRec with damaged VarEnv, SP pointing to the result
already stored in the FP).

Let's unify and simplify these implementations.

Reviewed By: @jdelong

Differential Revision: D1263348
Fix Typing_reason.to_string's multiline behavior

The to_string method for our typing reasons was concatinating together
multiple lines. This sort of looks ok sometimes, but it doesn't play well with
our json format or the indentation for our hh output. This changes to_string to
return a structured (pos, string) list.

Reviewed By: @jwatzman

Differential Revision: D1263804
Skip priv1 and priv5.php in ARM mode for now

They're failing intermittently because catch traces don't work.

Reviewed By: @edwinsmith

Differential Revision: D1267080
Fix chunked InflateStreamFilter

Bad use of PSFS_FEED_ME. Added illustrative test of the difference, and functional test for the actual issue.

refs guzzle/guzzle#538

Reviewed By: @ptarjan

Differential Revision: D1265248
make curl_multi resources invalid after close

refs guzzle/guzzle#538

Reviewed By: @JoelMarcey

Differential Revision: D1265552
XMLWriter: fix handling of null NS URIs and prefixes

refs guzzle/guzzle#538

Reviewed By: @ptarjan

Differential Revision: D1264659
Revert "fix bad merge (from 2.5 years ago?)"

No, @ptarjan, that wasn't a bad merge.  It was done on purpose.

This reverts commit ddc9a07e46e8472bf5beaafe01784a4aaac0e4a8.
This is quite out of date

@jdelong says `leak-on` doesn't even exist anymore