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.

Wow, it listens to the raw Envelope?  Isn't there still some kind of oddity with two Envelopes and odd unpacking?