shell: Don't let "?machine=undefined" leak into the URL

This will come back as a string and we will try to connect to a host
named "undefined" via SSH.

Reviewed-by: Stef Walter <stefw@redhat.com>
shell: New layout for navigation

Reviewed-by: Stef Walter <stefw@redhat.com>
shell: Adapt update_global_nav to new layout

Reviewed-by: Stef Walter <stefw@redhat.com>
shell: Move system information code to server page

Reviewed-by: Stef Walter <stefw@redhat.com>
shell: Remove "Rescue Terminal" option from dashbord menu

Reviewed-by: Stef Walter <stefw@redhat.com>
shell: Highlight active navigation tab

Reviewed-by: Stef Walter <stefw@redhat.com>
shell: Save space on the server dashboard

By using the hostname and realms directly as the label of buttons for
changing them.  Also, always leave a realm via a dialog.

Closes #1369
Reviewed-by: Stef Walter <stefw@redhat.com>
test: Adapt check-shutdown-restart

Reviewed-by: Stef Walter <stefw@redhat.com>
ws: Remove the cockpit-ws --uninstalled option

While you can still run cockpit-ws from the build tree it will
spawn cockpit-session and cockpit-bridge from the $prefix.

This was already broken ... this commit just makes it official.
It was broken for two reasons:

 * cockpit-session usually runs as privileged, and cockpit-ws does
   not. It is a security hole to have cockpit-ws tell cockpit-session
   which cockpit-bridge to launch.

 * cockpit-bridge loads packages from directories based on the prefix
   and/or $XDG_DATA_DIRS, so --uninstalled didn't work here.

If someone wants to invest time in making Cockpit runnable from the
build tree, and can do so in a secure and clean way, then I wouldn't
be against it.

Closes #1385
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
shell: Register dialogs separately from pages.

So that the upcoming refactoring can be done without having to bother
with dialogs.  Dialogs will get their own makeover.
shell: Make cockpit.loc private.

And refer to it as "page navigation parameters".
shell: Move URL encoding and decoding into "base" package.
shell: New-style URLs.
shell: Separate page parameters into host, path, and options.

And remove the old { page: "..." } construct from the API.