io-tests: simplify TcpConnectionSpec in preparation for coming modifications

This doesn't change any test logic, it merely structures the test fixture code a bit differently to make it easier to insert additional mocks required for coming additions.
io: small clean-ups
io: remove SelectionKey lookup and reduce IO-layer-internal message volume
io: add comments based on review feedback
Merge pull request #1406 from spray/master

IO: Remove SelectionKey lookup and reduce IO-layer-internal message volume