Make the fixup map unit test use gunit

Even before libhphp_runtime is split up it seems like we
should at least have some kind of way to write some unit tests, when
appropriate.
Check probe limit in HphpArray

Honor the MaxArrayChain runtime option by raising an error when
HphpArray probes get too long.  Since HphpArray uses open hashing
with quadratic probing, we use double the configured threshold,
which is arbitrary, but based on testing, to reduce false positives.
Cleaned up some load operations and added a label to LdClsCns.

Added a label to LdClsCns so that we generate better code for
it if guardStackType refines its type.

Cleaned up some of the load instructions: Removed the NR suffix from
LdMemNR, LdPropNR, and LdRefNR. Removed unused offset parameter from
LdMem. Improved docmentation of load instructions and described
rationale for having labels on some of them.

Renamed CheckUninit to CheckInit to make it consistent with CheckType
(i.e., branch to label if type is not init).
Fall back to interp from the IR.

Introduce a runtime option to allow falling back to the
interpreter, rather than to tx64. Once this is faster, we know we're
ready to ditch tx64.

Cleanups along the way:

  - Start macro-izing the runtime options. For tractability, I only did
    the Eval* runtime options, but the same pattern should work for other
    parts of the hdf namespace.

  - const SrcKey& -> SrcKey in a lot of places.

  - slightly iron out the handshaking between translate and
    translateTracelet.
Rename jumps.cpp to jumpopts.cpp
Fix buffer overrun, and add a check

We wrote 49 chars to a 48 char buffer. Under gcc-4.7.1,
RELEASE build, this corrupted a variable in the caller, resulting
in a crash.
AllowedDirectories overwrites should append

VirtualHost.*.overwrites.AllowedDirectories would replace the
default AllowedDirectories list, rather than of adding to it,
while Tiers.*.overwrites.AllowedDirectories would append to the
default AllowedDirectories list. This caused confusion, and
errors.

This makes both cases append, and also sorts and uniquifies the
list to make checking it O(log N) rather than O(N).
Couple of small fixes
Fix a bug for HHIR Print of Type::Bool, add some random byte things

Replace ands with movzbl.  Calling C++ for print_boolean was
wrong because it took an int64 but we don't know that the bool was
zero-extended yet.  Added two boolean instructions to the assembler
(with unit tests) that I didn't ever use.
Fix an assert on syntax errors

When using hphp to compile a repo, a syntax error in an input
file would cause an assertion to fail (DEBUG only).

When I tried to add a testcase, I found that we didnt quite support
this. We have a mode that ignores errors; but that also ignored crashes,
so I fixed test.mk to differentiate.

That revealed that hphp didnt pass through the result of invoking
hhvm, and that hhvm returned -1 for normal exits where the
php code had fataled.

When running the tests I found that it took over an hour to run
TestCodeRunRepoJit-Compilation, vs 4 minutes for the whole of
TestCodeRunRepoJit a couple of weeks ago (and my machines was
unusable for most of that hour). I dropped the parallelism
to "number of cores" from "number of cores * 2" and the time
dropped to a couple of seconds.