Raise a fatal error on class constant redeclaration.

We weren't matching Zend behavior with respect to inherited constants.
This patch makes that happen.
Remove extra padding from newSlab()

Since we include size for the header before rounding up, we don't need
the padding in MemoryManager::newSlab().  Also clean up a few comments
while I'm in there.
LRU-front registers returned from getReg

This was causing an awesome register allocation bug wherein a scratch register
was getting allocated on top of one already being used in the same instruction,
because the LRU order didn't reflect that it was still being used.
Fix a race condition

TypeConstraint's constructor is not thread-safe on the
first call. This was causing infrequent hangs for repo-
authoritative bulids.

There may be a similar issue in non-repo-authoritative
runs - but Ive never hit it. I suspect that loading
systemlib.php prevents issues. But Ive added an explicit
beginning of time initialization anyway.
Micro-opt in inline array getm.

We can keep probing, rather than bail, if we happen to encounter a
string in our probe sequence while looking for an int. This is probably
very rare, but saving the 5 bytes of code is valuable regardless.
Add stat counters to generic property accesses
Update outdated .inc files and generated files

Some of the .inc files were out of date after KindOfInt32 was removed. Some
C++ functions use "int" for one or more parameters (we left in support for
Int32 parameters), and this diff updates the .inc files to reflect that.

This diff also updates a few .inc files that were out of date after the
__destruct method was removed.
Add a vector base location representing $this

This diff adds a new location code 'H', representing $this in
the current frame. A new instruction, CheckThis, is used to preserve
the time at which fatals from a null $this occur. While the primary
purpose of the new location code is to further complicate the emitter
and runtime/translator, it also has the nice side effect of avoiding
about half of the increfs/decrefs we used to perform on $this.
Fix a bug in ClsCnsD type prediction.

In repoAuth mode, for unique classes, the material type of a
class constant is very strong evidence of its type. In other situations
it's just a prediction.
Grow StringData multiplicatively on appends

Some endpoints like WebGraphQLIPhoneFeedController and
/api/perflab_graphql:feed_before do a lot of string appends, for which
we end up allocating O(n^2) memory.

When we append to a string, it is usually a good indication that
we will do more appends. This diff allocates memory for newly
appended strings in a multiplicative manner.
Fix cgLdClsCns

Don't call cgCheckUninit if type is predicted.

Also added Type::fromRuntimeType() and use it to clean things up.
Fix use of funcd as a flag for FPushClsMethodF

I used funcd on an FPushClsMethodF as a flag to indicate
that the destination of the call was known at compile time.

But if the FPushClsMethodF is in the fpi region of another
call that was fully bound, funcd will be set on it anyway.

FPushClsMethodF is almost always directly bound, so this
wasnt causing too much trouble. Pretty much the only time
its not directly bound is when the method doesnt exist
(including the case where it doesnt exist, but is handled
by __call or __callstatic).
Add support for CheckThis and CGetM for property accesses via $this

The IR was punting a lot more after these recent bytecode changes, so
handle them.

Also, make the DumpIR output more readable and less confusing.
Support a register base for properties in the generic translator

Most of this diff was pretty mechanical, just expanding
tables of helper functions. The generic translator now supports
getting properties off of a base object that's in a register, avoiding
a bunch of unnecessary stores in the <H ...> case. This also adds most
of the infrastructure necessary to support keeping intermediate values
in registers if we ever want to support that.