GDB remote protocol support [v2]

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.

Changes from v1:
* Fix a typo in the REMOTE_MAX_PACKET_SIZE comment
* added documentation for the `__init__` method

Updates #259.