Look for the correct client or server packet when we have the chance.

This should improve backwards compatiblity.
Precreate the inputBuffers set, avoiding a trivial NPE.
Properly cancel written packets.
Intercept server packets when they're scheduled in the main thread.

Note that some server packets, such as LOGIN and STATUS, will still be 
run asynchronously.
Use getProperty() instead of System.lineSeperator(). See pull #12

Thanks to DerFlash for notifying me about this issue.