GDB remote protocol support

GDB can talk to targets via a so-called remote protocol. These targets can be things like gdbserver, ROM monitors on specific hardware boards, or applications that implement the same protocol.

This is an initial implementation allows connecting to the remote target, sending commands and receive results. The API can certainly grow later based on demand.