Move stream management to client-side

Stream management is now handled by the client instance instead of the
transport, which means things can survive losing and swapping out
transports.
Update docs
5.4.1