shell: Don't add our own properties to a frame window.

They get removed when the frame content loads.
shell: Register child windows directly.

Instead of finding them again by name.  This is more direct and it
becomes a internal detail of register_child that it associates peer
information with windows via the name.  (Ideally we would use the
Window object itself as the key in a hashtable...)
shell: Use explicit fallback when transport options are not set yet.

This will cease to happen once the shell looks up the packages before
loading external pages.
base: Don't delay opening of a ParentWebSocket.

Instead, do it immediately when returning to the event loop.
base, shell: Be more careful when forwarding control messages.

The "init" command is never forwarded, and non-broadcast messages in
the control channel are only forwarded to their corresponding peer.