Improve streaming support

Streaming now works like this:

* Open a channel
* Start a future streaming that data with a handle on the channel
* If the channel closes for any reason beside the server closing it,
  cancel the future

Previously, the streaming would continue even if the channel was closed,
which could result in blocking
Merge pull request #158 from cndreisbach/master

Improve streaming support