Implemented stating/stopping xdebug remote server

Summary: This diff implements correctly starting/stopping the xdebug remote debug
server, including initializing/deinitializing the dbgp protocol. The xdebug
server supports all the configuration options available in php5 xdebug.

A lot of this code started as the php5 xdebug code and so most of
the flow corresponds 1:1 to php5 xdebug. However, the code was very heavily
translated- all lines required some change of varying degree.
So feel free to bug me about style/structure as my goal is to keep this file
clean.

What's missing is responding to commands. There are quite a few of these.
Before that, I need to refactor the debugging hook code to work with non-hphpd
debuggers.

Reviewed By: @ptarjan

Differential Revision: D1473636
Refactored debugger-hooks to support non-hphpd debuggers

Summary: This diff touches a lot of areas related to the debugger so I'd like
feedback on the approach.  @mikemag I asked in irc who to talk to about the debugger
and was told no one really owns the debugger, but to cc you.

This diff refactors `runtime/vm/debugger-hooks` to support non-hphpd debuggers.
This is specifically important for xdebug, but the problem presented is the same
regardless of the debugger;. To add xdebug remote debugging, I would minimally
need to 1. hook into the debugging hooks 2. manage state between hphpd and
xdebug. This does both by abstracting the debug hook logic into a
`DebugHookHandler`.

Now, a debugger can register for debug events (breakpoints, exceptions, errors,
file/class/function loading, etc.) by subclassing `DebugHookHandler`
and then calling `DebugHookHandler::<T>attach` where `T` is the subclass. The
`DebugHookHandler` class manages allocating/deleting the subclass, which is why
the template parameter is used.

I've added a new class `DebuggerHookHandler` that enables the use of hphpd
using this change. The implementation of `DebuggerHookHandler` was moved
directly from `debugger-hook.cpp` and I've changed calls to
`ThreadInjectionData::setDebugger` into calls to
`DebugHookHandler::attach<DebuggerHookHandler>()`. So other than added
indirection, there are no changes to hphpd and so nothing should break.

Reviewed By: @ptarjan

Differential Revision: D1474540