Get rid of some hanging js.Proxy's and the corresponding release() methods on
Window and Tab.

Change Runtime.onMessage to a Stream<MessageEvent> and add test.

Change ChromeStreamController to automatically add and remove js listeners
as Dart listeners are added and removed.

Change background page to have functionality implemented in Dart.