Cleanup client and server communication, events loops, and error handling.

Cleanup a lot of hangs with either the debugger client or server in a variety of error conditions, mostly related to communication errors or the client or server exiting unexpectedly. One of the biggest fixes is that all cases where the client was left in a state where Ctrl-C wouldn't work have been fixed.

Remove lots of little snippets of dead code. If you see a function (or small set of functions/fields) deleted then it was actually dead.

I debated whether to keep throwing DebuggerClientExitException on the server, and I decided to keep it. I think it's reasonable that if you've got the server stopped and you quit the debugger that the request gets terminated rather than continuing to run.

I also considered a big change to the way Ctrl-C works, but ended up staying with what was there with just a bit of cleanup. We need to guard against people banging on Ctrl-C, which is a reasonable behavior, and I think it feels pretty reasonable with the updated message.

Finally, added many comments about how this stuff works.
Disable test/quick/debugger/list.php

After a rebuild, the first run of the run/tests tests/quick/debugger/list.php invariably fails on developer machines. It passes if run again, or if another debugger test has passed before it has run.
Unify multiple debugger client event loops, proper event handling in eval/print

There was a similar-but-different event loop used when receiving command results from the server which was close, but not quite right. Unified it with the main event loop to ensure that all error cases are handled properly when we put up a prompt at a nested interrupt, like when hitting a breakpoint during an eval. The event loop is now shared, with a few different "kinds" to control some of the special needs of the loop when executed from a command. Most  commands don't cause the server to run more PHP, so they don't change the machine state or cause more interrupts. But some do (Eval and Print) and certainly the top-level loop does, too. Made sure to throw a protocol error if any command causes this to happen when we don't expect it.
Fix hphp build

Not sure when this started happening, but it was getting an
unused but set variable warning.
Move test_ext_{apc,apache} to php

Should include everything except I dropped:
  - anything that just tested we're throwing NotImplementedException
  - something about start_time() in ext_apc
Rewrite TestExtArray in php

Most of this is ported over, except some omissions:
  - array_filter, array_key_exists (suspected we had coverage already;
    one is a bytecode, and one was rewritten in hhas recently)
  - some random cases distinguishing init_null_variant vs. null_variant
Delete TestExtSpl (it was empty)
Move test_ext_fb to php
Remove TestExtThread

It doesn't really test anything.
Delete TestExtApd

It only tests that it is not implemented.
Delete TestExtAsio

Empty stubs.
Port TestExtClass to php; delete TestExtClosure through Continuation
Move TestExtCType to php
Move tests from test_ext_datetime to php
Translate TestExtBcmath to php
Remove several TestExt tests that did nothing or added no coverage

All did nothing except ExtFunction and ExtSimpleXml.
ExtFunction does things that are sufficiently tested in other suites.
SimpleXml has a test suite, and this only had a few calls to some last
error functions that seemed weak enough to delete.
Move TestExtXml{,Reader,Writer} to php
Move TestExtBzip2 to a php implementation
Move TestExtHash to php
Port TestExtPreg to php