Feature/debugging api

This cleans up the send/recv mostly. Adds recv/sending acks.

In the future, this should be rebuild into a packet stream.
When ever something happens, read all data available, and split into
packets. Keeping overflow data for the next read. The list of packets
could then be better used to check for ACKs and other data.