Various improvements to websockets streaming

* Fixed my tests
* Switched streaming structs to use more appropriate data structures for hashes
* Switched to your new TransactionWithMetadata unmarshaller (which required it to accept TransactionType and hash keys in either order)