Fixes incorrect ACK-ing of packets
Another iteration of the algorithm
Better logging

Won't log in release mode + nicer api than std::cout has.
Adds Random class for more deterministic debugging
Faster sending

If possible send message right away.
Refactores protocol messages a bit