Refactor KeyManager and TagRecogniser
These classes are tightly coupled but live in different packages. They both provide StreamContexts - KeyManager for outgoing streams and TagRecogniser for incoming streams. They both hold copies of temporary secrets.