Tweak mergeImpl loop for hoistable classes

This loop seems to be a significant source of LLC load misses. To some extent
this is unavoidable, since its working set (all the classes in the universe) is
way too big for cache.

However, we can avoid doing a bunch of the same work repeatedly. The series of
pointer chases (*pre->namedEntity()->clsList()) was the major culprit, and if
all the Unit's classes are unique and defined without failure, we "cache" the
results of those pointer chases and identify them with a marked low-order bit.
We already do something very similar for the non-hoistable classes.

Also, comment a few subtle things that I realized as I worked, including a
presumably deliberate (but safe) race condition.
Support (some) ssl stream context options in HttpClient & SoapClient

HttpClient isn't stream context aware.  Add in support
for receiving stream context options and processing relevant
ssl context options.
Improve hphpd command parsing

The commands that are interpreted as PHP no longer go through
escaping. The ones that aren't still do.
Zero targetcache with memset.

Also, make size driven by a config flag,
and madvise it away when the thread goes idle.
Enregister object bases for BaseLCR

Can skip an extra check in the first propPre, but probably
doesn't have much impact.
Presize VMEC.m_constants(10000)

This array usually grows to about 8000 elements, reallocing
about twelve times along the way.  This should save some
allocation/memcpy/rehash traffic.
Fix throwing from FunctionEnter/Exit

In a really hard to reproduce edge case, fcallHelper would call
doFcall, which could then throw from FunctionEnter via
CheckSurprise.

In this case, the stack wasnt setup correctly to unwind
through fcallHelper, and the c++ exception mechanism called
std::terminate.

To fix it, I added a try catch to fcallHelper, and smashed
the return address to be the call's true return address.
This allows our unwinder to be called, and everything's happy.

While there, realized that we were swallowing exceptions from
the user profiler (basically to avoid issues like this); but
doing so was pointless, given that CheckSurprise could still
throw.
Give opcode NewArray a capacity hint

Add an array-capcity hint to the NewArray instructions, so
compiled expressions like array(1,2) or array(a=>1, b=>2)
have a shot at right-sizing the array before initialization.
Fixed bugs in continuations support and conditional jumps, and implemented code gen for GuardType and some conversions.

The Pack and Unpack Continuations helpers were incorrectly
not recording synch points. The DecRef for conditional jumps was being
pushed off-trace, which caused an assertion failure.
Fix InstrInfo for BindS
Allow reflection to work on closures.

This allows you to pass a closure to the constructor
of ReflectionFunction in place of a function name.
Correct ifdef check for MYSQL.last_used_con
Added user attributes to parameters
Clean up register allocation for Location::This

A few of the places that used Location::This sidestepped the
normal register allocation paths. I've cleaned those up, which should
cut down on the number of times we load from m_fp->m_this. I've also
changed the manually emitted closure code to use StackSym::H instead
of emitting This.
Avoid using MInstrState for statically known CGetMs

Many vector instructions don't need an MInstrState struct on
the stack to be executed. The most straightforward of these are CGetMs
with all of their offsets known at compile time, which is what this
diff adds support for. Now the generic vector translator is fast
enough that we can permanently kill off CGetMProp (I've manually
verified that the assembly output for the fast case is exactly the
same). isSupportedCGetMProp is still around for the IR.
Use the SPropCache for BaseS in generic vector translations

Just hook this up in emitBaseS.  Also flags
manuallyAllocInputs on the SetS and CGetS translations.
Remove unused typedefs and an unused map from Unit
Don't adjust rsp every time we do a generic M-vector translation

There is already enough free space above rsp due to the HHIR
spill locations.  Make this part of the ABI and take advantage of it
for MInstrState.
Fixed ReflectionClass::getProperties and getStaticProperties to return trait properties.
Fixed TestReflection for real this time.

var_dumping the parameters includes a field
indicating what function they come from.
This is different between hphpc and hhvm for
closures. Now the test only shows the name
of each parameter.