Smart-allocate MIterCtx::m_mArray.

Smart-allocate MIterCtx::m_mArray.  Directly embedding m_mArray bloats
the VM stack enough to cause an overall performance drop, so
smart-allocation is the next best alternative to straight new/delete.
Dont assume the class exists in FPushClsMethodD

If the class exists at translation time, and is marked
AttrUnique we would burn in the address and assume its
always defined - but it may not be. So add the check.

hphpc does some static analysis to determine that the
class really is available, so use that to skip the check
when possible.

In addition, do some cleanup on Self, Parent, AGetC
and FPushClsMethodF.
Remove dead code for alternate APC implementations

The lock-based table implementations were kept around while the
nonblocking table was "baking", but it's now stable.  This removes
the lock-based code.
Get rid of some suspicious uses of RELEASE.

Using the RELEASE macro is, as far as I understand, a bad idea.
We usually just want !DEBUG.
Inline some int-keyed HphpArray accesses.

Stay in translator output for some simple array accesses. For
now, this just further specializes the already-specialized case of
array_getm_i. We'll build on this in subsequent diffs.

The translation inlines the *entire* array access, quadratic probe and
all. This appears necessary; only doing one probe, and then falling back
to a helper did not seem to win.
Add a bytecode to implement array_key_exists

Its a commonly used, very lightweight function; we
should avoid the overhead of a builtin call.
Let _count float in some more places.

At one point we had a system invariant that the _count field
of root-like TypedValue's was 0. This invariant hasn't been
buying us much, and it costs us a lot of stores.
Fix typo in linearscan which allocated a register for type None
Consolidated smart-allocators

Rework SmartAllocators so each allocator allocates fresh objects from
the single frontier in MemoryManager, but still has its own
size-specific GarbageList.

Now with smart_malloc and SmartAllocator using the same slabs,
iterating over the heap is no longer possible; sweeping and the
backup cycle gc were effected.

For sweeping, NeedSweep SmartAllocator flag was eliminated.
Strings that need sweeping are placed on a string-specific sweep list,
and SharedMaps are swept using the Sweepable mixin class.  Other objects
that needed sweeping were already using the Sweepable mixin.

The cycle collector is now disabled.  It still compiles but it doesn't
visit any objects.  Since it was not finding many cycles before, and
caused SharedMaps to "inflate", this is okay for now.
Support statically-known Class* information in more M-vector Prop operations

Get more information about statically known object types from
hphpc to the JIT.  Uses this information on intermediate prop
operations for all M-vectors, and final operations for CGetM and SetM.
Removing the old SetMProp specialization now is a win.  I also tried
implementations of the final operations for IssetEmptyProp, VGetProp,
BindProp, and UnsetProp, but none of them seemed to pay (and VGetProp
didn't work) so I'm leaving them out of this.
Don't clean and smash regs in emitMPre
Revert prefetch in GarbageList::maybePop()
Revert "Don't clean and smash regs in emitMPre"

There's a reliable assertion failure in verify_quick_jit
after this now.  (Wasn't when I first tried.)  We'll want to debug
before doing this.