Reimplement launcher as a new class

GgtLauncher is now a GObject, and it works by replacing the contents of an
entire window. While the entry is present, the whole contents of the window
are replaced by the launcher. A reference to the contents is kept around, to
be able to restore them when the launcher is closed.