just thorw a regular exception

I'm not expecting a user to do anything actionable (other than open an issue) on this error so a regular Exception should be ok.
Make Nemo aware of functions defined in systemlib

Now that we define functions in systemlib they also need to be available during static (Nemo) analysis.
Cleanup flow control around exceptions

There were multiple issues with flow control when exceptions occur. Fixed these by ditching the reliance on the exception thrown interrupt and introduce an exception handler interrupt, which indicates control is about to pass to a catch clause. This gives us much better insight into how execution is flowing and how we might need to adjust an in-flight stepping operation.
s/Call/CPPCall/

A precursor to moving the Transl namespace to JIT. We have an IR opcode `Call` and this would conflict. Those should probably be in another namespace, but this is easier.

This was way easier to do in a compiled language :)
Trace -> IRTrace

For converting Transl -> JIT. We either do this or convert all the other `Trace` calls to `HPHP::Trace` which seemed worse. This also niecly mirrors `IRInstruction`.
Provide a command line switch to specify the path to the debugger config file

Currently the debugger config file is always expected to be at ~/.hphpd.hdf, except when the debugger is controlled via the API, in which case the API client can specify the path. With these changes the path can now also be specified via the command line. Also, the test runner has been modified to look for an hphpd.hdf file and specify the path to it as a command line option. If present, this file also indicates that tests in the directory must be run in debugger mode, making the .opt files redundant. Note that it is important for tests to be able to control the contents of the config file since debugger output is controlled by it and tests will be brittle unless the config is part of the suite and not controlled by the user running the tests
Remove the SharedVariant pointer from StringData.

We only use it to lazily grab the hashcode.  So just grab the hashcode
eagerly when we create the string.
Remove assertion that is no longer true and that does not do anything useful.

This assertion should have been removed with an earlier diff that made it no longer true.
Do not recreate the debugger options file.

The code for reading in the personalized debugger options, always wrote out the file to account for the case where there may not be a file in the first place. This is not necessary and can lead to the file being changed when running various kinds of debugger tests. Since the tests use a checked in file, it is not desirable for the file to change as a result of a test run. With this change, the file will only be written out when it is missing in the first place. There are still some scenarios where it is possible to write a test that will change the file. Currently no such tests exist. Also, in those scenarios, the test may well want to verify that the file is changed, so more work will needed later on. Right now, that can wait.
fix header order

fixed the lint rule and includes the extra header we needed
use TRACE_SET_MOD

I found this macro while refactoring and since I like consistency, I used it everywhere.
Keep the uploaded data when a partial upload error occurs

When we get an UPLOAD_ERROR_C, record the filename and the size
as usual.

I've not been able to test this - I can't get a partial uplaod,
even by quitting from firefox during the upload. I seem to either
get a full upload, or nothing at all.
Cleanup a bit of exception/error handling between the VM and the debugger

We had two similar-but-different functions for getting a notification from the VM about an exception. Cleaned that up by using the proper one for a thrown exception where appropriate, and moving the old one into a hook (like the other VM->debugger hooks) specifically for error messages.
Remove ArrayData::getIndex virtual methods.

They aren't used anymore, except to implement isVectorData(),
which we can make pure-virtual and implement more efficiently
in each subclass of ArrayData.
vector and map get/set/isset specialization in IR

specialized the IR instruction CGetM/SetM/IssetM for Vector and Map. IR now generates specialized code in those situation similar to what is done with Array.
don't call auotloader with blank name

I debated putting in an assert in the autoloader but I'm worried that will break many things. Lets just plug this for now.

Closes #803
allow constants in systemlib

The problem was a few:

* All constant declarations were wrapped in a statement list. The merge-only check was allowing top-level `define()`s but not top level statement lists. I unwrapped them. I have no idea why it was done. Probalby just cargo cult programming.
* When converting a UnitEmitter to a Unit we only allowed constants in RepoAuthoritative mode and not systemlib mode.
* Systemlib constants weren't being set as UnitMergeKindPersistentDefine
* UnitMergeKindPersistentDefine constants weren't being marked mergeOnly when pulling out of a repro
Add back a necessary null check

Diff 817612 added a null check, but inadvertently removed a null check.
Fix deep copying for Sets

This logic got messed up somehow during rebasing and we were missing a
case for Set inside collectionDeepCopyTV(). This diff fixes the issue.
Cleanup small stepping

Small stepping, which is stepping over sub-expressions (kinda), worked but was a little goofy. The mode was set on the client, passed over with control flow commands, placed on the execution context, then retrieved from there and used by those same flow commands. Removed the execution context part of it, since it was useless, and factored grabbing the offsets into the flow cmds where they belong instead of doing it all the time.

The run cmd also had some notion of small stepping, but you'll note it was never sent over the wire. Nuked that, since it never mattered anyway.