fix segfault

Don't assume we are in a function.
fix reflection parameter problem where type and type hint were made to collide. Separated the two...

ReflectoinParamenter was fetching both type and type hint from the same field. That created an incompatible change with existing code and broke the mocking framework. Separated the type and type hint field to contain the possible different values.
hhir punting to interp by default, master version

Let's do this. It's already on in the current rc; this is
mostly to get another test run on current master.
Explicit CopyString, remove (const char*) constructors.

This gets rid of the (litstr) StringData and StackStringData
constructors, but keeps String(litstr).  Also rename all
the instances of AttachLiteral to CopyString, since they now
mean the same thing.
fix shared test name

This test was imported WITHOUT hard-coded output. Meaning it was compared to zend. It so happened that I had cleaned my repo after any runs of ##TestExt## so the file they both created (and sometimes didn't clean up) didn't exist. So that is the output I recorded.

@mwilliams do you think you intended for the file to exist? It wasn't in the repo.

With this diff I'm using a unique filename so it doesn't matter if ##TestExt## hasn't cleaned up perfectly.
Shorten SSATmp::getInstruction, SSATmp::getType, IRInstruction::getOpcode

The function names were too damn long.
array_values dropped references

It should preserve them. This was breaking pass-by-reference
via ReflectionFunction::invokeArgs.
Make new reflection API instead of changing getTypehintText()

A bunch of tests were failing because the behavior of getTypehintText()
changed. Instead of changing how getTypehintText() behaves, let's just
introduce a new reflection API, and then tests and application code can
be changed to use the new API later.
Add KeyedTraversable interface
make test runner work in open source repo

Our contributors should be able to run the tests.
import non-predictable number tests

I couldn't handle these until we had ##.expectf## support. Now we do.
Keep simplifyCall stateless

Read the stack out of the instruction instead of out of
TraceBuilder's current stack pointer.
Don't issue MissingAbstractMethodImpl warnings unless WholeProgram

Local linting just looks at the files that were changed,
so we dont always see the implementation of an abstract method.
Disable the warning in that case. We'll still catch it when
we do whole program linting later.
Allocate registers for the main trace first

Linearscan placed the exit traces immediately after
the branch to them. This meant that they could cause spills in
the main trace. This diff re-orders things so that they come last,
but saves the state at each exit point, and restores it before
allocating each exit trace.

I've not yet dealt with the "live across native calls" case, so
this does cause more registers to fall into that category. I'll
tackle that in a follow up diff. But this already seems to be on the
good side of neutral.
Litstr must die, episode V.

Removed the litstr overloads of Array::rvalAt, rvalAtRef, lval,
lvalPtr, lvalAt, and set.  The main one left to do is operator[].

Fixed a bug in f_get_html_translation_table() where we were copying
the null terminator of what should be a one-character string, thus
creating a two-character string with s[1] == 0.  (cc @jdelong)

In class Extension, store a String for the name instead of
const char*.  cc @sgolemon
Fix a bug in HHIR's emitParent

We actually grabbed the parent of the parent.  This means
things like parent::foo() were skipping the immediate parent.
Do assertOperandTypes on each instruction after each pass

Check for broken invariants.
Add a bit of graceful error handling to C++ IDL code

Instead of failing obtusely, do some checking of the JSON schema so we
can produce useful error messages. This doesn't strictly check
everything that could be checked, but it will catch the most common
errors (i.e. the ones I discovered while making this change originally).
Move translation counters after tracelet guards

With HHIR, I noticed they were being emitted before the guards.
Instead of having the insertion logic check for first marker, add an
IR instruction for incrementing the counter.

Also, got rid of firstMarkerSeen flag.

And also fixed lint warnings while here.
rename getReturnTypehintText() to getReturnTypeText() to be consistent with the new API that drops the 'hint' part in the method name

Simple renaming of method for consistency reasons