Implemented breakpoint_set

Summary: This diff implements the command breakpoint_set. This depends on D1494622.
This is another massive diff.@ptarjan and I discussed it probably wasn't worth
the time to break up at this point given how crunched we are on time, however.

breakpoint_set is the command used in remote debugging to add a new breakpoint.
See http://xdebug.org/docs-dbgp.php#id1 for a thorough description.

The imortant details are:
* There are line, function entry, function exit, and exception breakpoints.
* You can set "hit conditions". E.g break every x times, after x times, or
  on the xth time
* Breakpoints can be enabled/disabled and can be temporary
* Unmatched breakpoints are stored and then added as new files/classes/functions
  are loaded.

Not implemented:
* Conditions- these will be added when eval support is added
* Breakpoint removal- will add with breakpoint_remove. Added some notes for this

There are some other misc changes in here as well:
* Some commands (such as breakpoint_set) need to fail with xdebug error codes,
  so I exposed the error code enum and added a giant try/catch around the entire
  command handling routine.
* Apparently php5 xdebug allows extra/invalid command arguments without warning
  as long as all the necessary arguments are there. Changed command infra to
  match this.

This took a longer than expected due to:
 1. Bugs getting breakpoints to work in the JIT
 2. The decision to refactor in favor of hphpd-like breaking/flow
 3. This diff is huge and there's a ton of state to manage, fighting bugs took
    longer than previous diffs.

Reviewed By: @ptarjan

Differential Revision: D1497010