Tighten checkRegisters()

Currently, check registers works by traversing down the dominator
tree.  Effects on registers from a dominator block can be seen
in each dominator child.  This will miss a rogue assignment that
happens in a block that does not dominate one of its successors.
For example if we mis-assign to a register in one arm of an if-
then-else block, we won't notice.

This diff changes checkRegisters() to propagate register state
along flow edges, so we can catch such rogue assignments.

Differential Revision: D903949
remove option that doesn't work in OSS

- remove option from docs that doesn't work in OSS (becuase it
depends on a hacked version of mysql)

Differential Revision: D906111
Moving generation of generator bodies from compiler to bytecode emitter.

Generators are natively represented by 2 functions, which are now generated
by parser. Not only it's more natural to do this only when we emit bytecode,
but it will also allow us to reuse this logic for implementation of async
functions.

Differential Revision: D898769
Correction of D898769

I accidentally landed some old code with the previous diff
D898769. This will just remove it.

Differential Revision: D907355
Fix a small error in the IR for converting a resource to a string.

Something was just missed in an overall conversion effort. Found this in PHPUnit testing. @ptarjan was quick to diagnose!

Differential Revision: D907670
Set EnableXHP=0 by default, improve how the lexer works when EnableXHP=0

A couple of developers on github have reported that they've hit errors at
parse time with certain expressions that work under Zend PHP, or that they
have gotten output unexpected tokens from token_get_all(). A lot of this
is related to the lexer/grammar rules for XHP, so an easy solution to fix
a lot of these issues is to set EnableXHP=0 by default and to make some
changes to the lexer to make it more Zend PHP compatible when EnableXHP=0.

Closes #740
Closes #846

https://github.com/facebook/hiphop-php/issues/740
https://github.com/facebook/hiphop-php/issues/846

Differential Revision: D905986
interpOne bugfixes for vector instructions

This diff fixes a bunch of issues with interpOne of vector
instructions that only show up when the rest of the trace is
translated normally. I ran into them trying to perflab turning off the
vector translator.

Differential Revision: D901267
Add pprof server

hhvm will now respond to pprof requests. Start up a
server, curl /hhprof/start to put in a request to profile, then
fire pprof at /pprof/heap to get a heap profile.

Differential Revision: D896906
Add NextURL and Global profile request modes to pprof server

/hhprof/start will now also take parameters:
type = "next" (default) or "global"; "next" will profile the
next request or the next request to a particular URL if the url
parameter is present, and global will profile all requests until
stopped (but waits for at least one)
url = <some url>; if present and the request type is "next", then
it will get a profile for the next request to the given URL.

Differential Revision: D896989
Add cancellation endpoint to pprof server

You can now cancel profiling by sending a GET request to
/hhprof/stop. I also added an extra thread to the server so you
can un-hose yourself if one thread is waiting on a profile, but
it's still possible to deadlock if multiple clients try to get
the profile.

Differential Revision: D897271
Add runtime options for pprof server port and threads

As stated on the hhprof wiki page, this allows some
extra configuration.

Differential Revision: D899538
gcc 4.8 compilation fixes

gcc 4.8 fixes from Github

Closes #889

Differential Revision: D900456