Split SbtChannel out of SbtClient 

This is mostly a code cleanup to separate concerns; it also allows us to make more assumptions in SbtClient because it becomes possible to use the raw channel if someone has custom needs.

So one (perhaps silly) goal was to try to keep all these high level channel things COMPLETELY empty of implementations, so they would be pure java interfaces, and easier to keep binary compatibility.

As such, you should make a `private[client] class AbstractSbtChannel extends SbtChannel` with the claim method.  Otherwise, if we ever change that implementation, we're screwed from a BC perspective.