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.