Java Debug Wire Protocol support
This is a reasonably complete implementation, but only messages that are
actually generated by debuggers have been implemented. The reasoning
behind this is that it's better to leave a call unimplemented than have
something that appears implemented but has never been tested.
An attempt has been made to keep the implementation distinct from the VM,
with Debugger.c acting as a sort of portability layer, so that the code
might be useful in other projects. Once you get multiple simultaneous
events and debugger requests with thread suspension bouncing around,
though, it's difficult to keep things "generic".