shell: Execute systemctl via pkexec when starting Docker

So that wheel users can also do it.

Fixes #1317
Reviewed-by: Stef Walter <stefw@redhat.com>
test: Run Docker tests as "admin"

Closes #1326
Reviewed-by: Stef Walter <stefw@redhat.com>
static: Tone down the warning on login screen

Closes #1328
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
Release version 0.27
Use the term 'package' instead of 'module'

The packages really are just collections of resources, with the actual
html files and javascript files and (soon iframes) providing the actual
modular architecture.

In addition 'modules' is used a lot in the javascript community to do
with module loaders etc. We want to avoid confusion there.

Rename 'module' to 'package' everywhere. And move the modules/ directory
to pkg/ which is shorter and clearer.

Closes #1310
static: jQuery becomes part of the the packages

No jQuery on the login page is the upshot here.

We'll probably unfortunately get to the point where different versions
of component have different jQuery requirements and so on. So jQuery
gets loaded by the packages.

See later commits for a solution that prevents needless copying of
jQuery all over the place.

Closes #1315
agent: Tests can override the location that packages are loaded from
agent: Don't list packages that fail to load/checksum

Be strict about this stuff now. We can't become stricter later
once this becomes API.
agent: Validate that package names and their files have sane names

Allow alphanumeric and a very small set of punctuation in package
names and their file names. We use these directly as URI components,
and can avoid confusing encoding this way.
common: Implement basic templating for cockpit resources

These are very similar to autoconf configure templates and consist of
@@variable@@ to substitute 'variable' for a value. There is an API
that implements this, and we now use it for index.html

This will be used for substituting package checksums for package
names in resource files.
ws: Use templates to expand paths in resources

Strings like @@shell@@ are expanded to the full checksum and/or
name of the package in question, including addition of the relevant
host to load from. This allows package to refer to files from other
packages simply.

The shell package needs to be expilictly qualify all of its paths
since it is not loaded into its own frame/document but replaces
the login page.

Resource URLs now all have the same prefix, and automatically
detect whether a checksum or package@host style is in use.

They look like this:

/cockpit/xxxxxchecksumyyyyy/path/to/resource.file
/cockpit/package/path/to/resource.file
/cockpit/package@host/path/to/resource.file

The prefix '/cockpit' was chosen so that when other web apps
do deep embedding of our components, the prefix should not
conflict.
agent: Prefix checksums with the '$' character

This allows us to treat them just like package names, but
differentiate them exactly where necessary.

The '$' character is also a valid javascript identifier character
which allows us to use these as module names for AMD loaders and
such.
agent: Resolve checksums in the agent instead of web service

This will make life easier for people embedding Cockpit if they
end up handling the resource channels and resource loading
themselves.

We also change the JSON format for listing packages

Allow us to convey information about packages with multiple
names more cleanly and without duplication.
agent: Add support for aliasing packages

This allows a package to claim a well-known package name of a feature
that it provides. It also allows us to mark a certain base package
as the 'latest' etc.

Closes #1316
lib: Include both minified and non-minified jQuery and bootstrap

The latter are useful in debugging
agent: Add "accept": "minified" resource channel option

If set, this will choose a minified version of the file if available.
Minified files sit next to the normal files and have an suffix of '.min'
just before their real file extension. For example:

  jquery.js
  jquery.min.js

This is in a similar vein to the content selection that the HTTP
Accept and Accept-Language headers provide.
tools: Rework how the js-lint and minify tools work

js-lint now cats the files together, and provides the input
to minify.

Install different minified and non-minified file names, for use
during debugging and non-debugging, and making use of the content
selection of minified files in the previous commit.
shell: This module becomes more normal

Rename cockpit.js to shell.js, since cockpit.js will be API in a
base package.

Also there's no need to list everything in the manifest. Loading
of resources happens via well known paths. The shell has such well
known paths. Loading of javascript in other packages will happen via
<script> tags. Do something similar here in the shell.

Note that the use of a lot of split javascript files that get
combined is pretty shell specific. Eventually we'll usually have one
javascript file per iframe/component to be loaded.

Closes #1319
base: Move jquery bootstrap and term.js into new base package

And make the shell use this package.

The module is called 'base' but we go by the alias 'latest' which
contains the latest unstable Cockpit API. There will be counterpart
modules in the future.
base: Move spawn.js and channel.js into base package

So they can be used from multiple packages. We also document them
in the guide.

One minor change is that channels now automatically detect which
host they should connect to based on the page parameters.