Instead of abusing SocketChannel.read in a tight loop, use a Selector
to tell us when a peer incoming channel is ready to read.

This fixes excessive CPU usage when running a peer over a slow
link. In that case, an IncomingThread would spend >90% of its time
repeatedly calling SocketChannel.read. Observed CPU use was in excess
of 350% on a quad-core MacBook Air.
Merge branch 'selector-read' into scalability