Tidy up how windows are added/removed.

- Don't have FrameContainers add themselves to the WindowManager in
  the constructor.

- Don't make FrameContainers keep a reference to WindowManager just
  to remove themselves when they're closed

- Instead have WindowManager register a FrameClosed listener and use
  that to remove windows itself.

Change-Id: Iadbca8a28f7ef3372df7fda722a3cbba2a0fbad6
Depends-On: I0f60ac23438313cab49cdb86c089938f5ee44abc
Reviewed-on: http://gerrit.dmdirc.com/2842
Reviewed-by: Greg Holmes <greg@dmdirc.com>
Automatic-Compile: DMDirc Build Manager