Add SocketAddr parameter to `handle_packet`.
Use state machine to handle received packets.
Update test to new semantics.
Make `handle_packet` return IoResult.
Move Reset packet handling to `handle_packet`.
Merge branch 'refactor-states'