Support var_dump()/print_r() from DOM

Summary: Add __debugInfo() magic methods and dump props

Closes #1882

Reviewed By: @ptarjan

Differential Revision: D1351935
Use IR control flow for InitProps/InitSProps

Summary: These have a call on the cold path, so we might be able to
avoid spills/moves to callee-saves on the hot path by using IR control
flow instead of unlikelyIfBlock.

Reviewed By: @ottoni

Differential Revision: D1347343
StCell should not consume reference

Summary: CreateAFWH already takes care of consuming locals.

Reviewed By: @jano

Differential Revision: D1352985
Produce Optimize translations even after JitAMaxUsage is hit

Summary: Otherwise we end up with Profile translations running forever.

Reviewed By: @swtaarrs

Differential Revision: D1350263
Revert "StCell should not consume reference"

Summary: This reverts commit 78a8e14dc6256d770fdb3bbe1b2324f722b46654. It broke
a bunch of tests.

Reviewed By: aravind
Initial code relocator

Summary: This just gets the basic functionality enabled. We now
generate code to a new location, and then immediately relocate it
to where it should go. This ensures that things break fast if
we start generating non-relocatbale code.

The next step will be to add alignment info, so we can relocate
between arbitrary addresses, and then adding support for shrinking
jmps should be straightforward

Reviewed By: @edwinsmith

Differential Revision: D1351705
Update NEWS for Jay-Z release

Summary: Better late than never.

Reviewed By: @dariorussi

Differential Revision: D1353685
NEWS change

Reviewed By: @alexmalyshev

Differential Revision: D1353712
don't check for HH\is_object

Reviewed By: fredemmott, jwatzman

Differential Revision: D1352884
LL Cool J NEWS

Reviewed By: drussi, alexanderm

Differential Revision: D1353689
formalize HackStrictOption

Summary: I added a consistent way to raise the warning and error which print out the ini setting which caused it. I also converted all the `IntsOverflowToInts` to use this.

Reviewed By: @JoelMarcey

Differential Revision: D1350800
change some ini settings to be easier to bind

Summary: As written these are hard to use the `Config::Bind` functions

Reviewed By: @sgolemon

Differential Revision: D1348850
ArrayInit cleanup

Summary: Misc cleanup regarding use of create() vs. toArray() or toVariant().

Reviewed By: @edwinsmith

Differential Revision: D1351580
Fix OSX warning

Summary: Fix incorrect printf flag that generates warning on OSX

Reviewed By: @ptarjan

Differential Revision: D1353078
take get_next_char() from php5

Summary: Closes #2775

Reviewed By: @fredemmott

Differential Revision: D1353935
Add some hhir docs to hackers-guide, move Type information from ir.spec

Summary: This adds a few more lines about the HHBC -> HHIR translation process
and ports the ir.specification section about Type to hackers-guide. It wasn't a
straight cut & paste: I changed some of the notation and wording to be more
consistent with its new surroundings.

Reviewed By: @edwinsmith

Differential Revision: D1349713
Refactor event hooks

Summary: - split FunctionEnter into FunctionCall and FunctionResume
- split FunctionExit into FunctionReturn, FunctionUnwind and FunctionSuspend
- propagate fault explicitly all the way down to FunctionUnwind
- simplify FunctionReturn related hacks (no opcode checks, no try/catch)
- do not try to intercept FunctionResume (it doesn't make much sense, we were lucky not to crash there before)
- FunctionReturn always reports returned value (i.e. not Generator or WaitHandle)
- exceptions are reported only via FunctionUnwind (i.e. not when exiting destructor that did not fail but happened to be executed during unwinding of other exception)

Reviewed By: @markw65

Differential Revision: D1351093
Re-enable CheckSurprise on FunctionExit

Summary: After recent refactorings, it's safe to throw exceptions from
FunctionExit. So, let's give CheckSurprise a try. If we do it as the
first thing, it will take care of pending exceptions and we don't need
to check them.

Reviewed By: @markw65

Differential Revision: D1351116
setup the machinery for ini_get to work

Summary: This introduces a new api, `Config::Bind` which takes the param by reference instead of returning the value. This way we can remember the location for future `ini_get` calls.

This diff doesn't move any of the api users over, I want to do that in smaller chunks so they are easier to revert if they cause issues since they'll be read pipeline chanes.

Reviewed By: @fredemmott

Differential Revision: D1348849
Don't duplicate the dispatch loop just for RetC profiling

Summary: For the interpreter-based warmup profiling, we just call
shouldProfile() in each bytecode's implementation. I see no reason why RetC
should be any different.

Reviewed By: @edwinsmith

Differential Revision: D1350436