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

Closed #28.
While you're here, can you change `close` to set _subscription to null? Also, I think `close` should probably cancel the subscription first, then close all the controllers.