Unwrap and handle return value.
Add tests for correct handling of unordered packets.
Working solution for ordering packets.
Add stricter runtime checks in `UtpSocket::connect`.

Previously there were no checks against the peer response, which must be a STATE
packet with no payload. It'd be probably better to return an IoResult instead.
Refactor insertion of unordered packets into buffer.
Clean up `UtpSocket.recv_from`.
Reformat comments.