Add stream.Close() function.

The connection, stream & decoder loops are kinda twisty. I'd like to
have a crack at refactoring this. Distinguish between remote close
requiring reconnection and local close which do not require
a reconnect.

Reconnect probably needs a ReconnectCheck callback since 401's,
500's may require the app to give up rather than reconnect but
stream.Errors only recieves an io.EOF which isn't so helpful.