Add a QDockFrame base class to make toplevel window handling cleaner.
Refactor the docking to not use a DockHandler class.

Most of the logic was pushed onto the QDockContainer.
Update comment