Remove all implementation from SbtClient, SbtChannel, SbtConnector

Keep these as pure interfaces only to simplify future ABI
maintenance.

This commit is intended to have no semantic changes just move the
implementation around.
Replace SbtChannel.claim() with claimMessages()

This atomically adds a listener and starts the event thread,
which ensures the listener will not miss any events.
Ensure that when adding message handlers, they ALWAYS get a ClosedEvent