Remove LVariableTable, RVariableTable, and getHphpBinaryType()

This diff removes LVariableTable, RVariableTable, and getHphpBinaryType().
It also consolidates some of the include logic that was spread across
multiple files.
Fix gzinflate for strings larger than 128M

gzinflate tries to do some kind of exponential growth that
hits the max string limit immediately when you try to deflate a string
larger than 128 megs.  The logic is a little convoluted with a few
ways to bail, but rather than try to really fix it I just made it
behave close to the same on small strings, but use a smaller starting
factor on long ones and be willing to try to deflate it into a
max-sized string.
Implement VectorTranslator::emitElem

I'm going to pull my big vector translator diff apart into
more manageable chunks, both to keep things simpler and help me
debug. This is part 1.
Add stronger assertions when killing IncRefs in dce

This diff changes DceFlags to be an opaque struct, and uses
the new decRefNZed flag to ensure that we don't kill any IncRefs
unless they're consumed by a DecRefNZ in at least one path. This
doesn't catch all cases of malformed IR, but it catches common
mistakes, including one in the vector translator that I just spent 2
days hunting down.

A couple things came out of this:
- dce now removes unreachable code before performing the real dead
  code analysis, since any unreachable IncRefs should be killed
  regardless of what consumes them.
- I found a bug in memelim where it wouldn't properly account for
  Uninit -> InitNull promotion when boxing a local. The fix for this
  was to never emit "Box Uninit".
Implement support for boxed bases in VectorTranslator

Nothing too fancy here. genLdLocAddr now takes an optional
exit trace to guard the inner type of the local.
Enable VectorTranslator::emitRatchetRefs

The code was mostly already there, it was just waiting for
proper control flow support.
Enable branch fusion for [N]InstanceOfBitMask

This translates to a single 'testb' x86 instruction, so it's cheap
even if we end up redoing it.
Update inconsistencies doc

Remove HPHPc-only inconsistencies from the inconsistencies doc. Also,
clarify the wording to make it clear we are comparing HipHop VM with the
Zend PHP engine.
Get rid of hphpc's switch helpers

hashForIntSwitch and hashForStringSwitch were used as part of
an efficient switch mechanism in hphpc, but are now dead.
Implement VectorTranslator::emitSetNewElem and emit(Empty|Isset)Elem

Three more straightforward vector operations.
Remove some more dead code
add support for late bound constants to the defined function

The defined function did not have code to deal with "static::const" expressions. Added the necessary logic.
TCP ports should be unsigned 16 bit integers.

Summary:
Specifying Signed 16-bit Int in HDF parsing
prevents use of any port greater than 32767.

Test Plan: Run a server on port 40000

Reviewers: andrewparoski, jdelong, smith, kma, mwilliams

Reviewed By: jdelong

CC: hphp-diffs@lists, ps, ottoni, aalexandre

Differential Revision: https://phabricator.fb.com/D735202
Remove ReqSrc and ReqMod

They can no longer be generated. Also remove all the associated
code from the emitter.
Fixed ContNext by writing InitNull rather than Uninit.

Apparently, m_received needs to be InitNull, rather than
Uninit.
Some ObjectData/Variant cleanup and dead code removal

This diff eliminates setOpEqual() and appendOpEqual() from Variant, and
it also removes several methods from ObjectData: o_assign_op(), o_argval(),
setDummy(), init(), cloneDynamic(), o_setPublicWithRef(), o_i_set(),
getRedeclaredParent(), and o_propForIteration().

This diff also makes several methods in ObjectData non-virtual: destruct(),
o_toIterArray(), and o_getDynamicProperties(). To achieve this, some of the
logic from Instance was moved to ObjectData.

Finally, this diff gets rid of "hhvm/externals_stubs.cpp" and
"runtime/eval/eval.cpp".
Fix CodeGenerator::cgNInstanceOf

It assumed the result would be in rax, but it isnt always.
Use the correct register.
Limit the number of blocks handled by TraceBuilder::optimizeTrace

It appears to be O(N^3) in the number of blocks (a quick glance
at the code suggested N^2, but 1000 blocks took about .5s to process
while 2000 blocks took 4; 19000 blocks was nowhere near finished in
an hour). A better representation of the dominators would probably
solve this - but would also take *much* more space.
Having more than 1000 blocks appears to be extremely rare, so
this seems like a reasonable solution for now.
Simplify classof

We dont need to check whether the first Class* is
an interface or trait.

If the second class is an interface or trait, we
take the slow path. Otherwise, we take the fast path,
which will always return false if the first class is
an interface or trait (its m_classVec can only contain
interfaces or traits, while cls's m_classVec can only
contain non-interfaces and non-traits).

This saves doing the check, and avoids the slow path
in the case where the class being tested  is an interface
or trait.
Reenable direct branch patching for ExitTraceCc

It looks like the pattern-matching performed in
hoistConditionalJumps() was not updated when control-flow support was
added, so the optimization was missing opportunities.