Lazy listen in StreamRouter, cancel subscription when no longer needed.

Closed #28.
I think listen() is sync, so you should be able to add an `expect(listenerWasAdded, isTrue)` after it.