sort the controller mounts

Keep the all_mounts array sorted.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
handle pre-mounted and co-mounted subsystems

Before we try to mount cgroups, record which were already premounted.
Also record which were co-mounted.

For any pre-mounted cgroups, assume that they are managed by someone
else (like systemd) and do not set a release agent.

Skip remove-on-empty test if pre-mounted

remove_on_empty: refuse to run on pre-mounted controllers

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
introduce basic structure for multiple controller dbus requests

In some dbus requests, allow the controller field to be a single controller
(as before), "all", or a comma-separated list of controllers like
"cpu,cpuset".  If cpu and cpuset are co-mounted, the create will be done only
once.

The dbus requests allow multiple controllers are create, chown, chmod,
remove and movepid.

If more than one controller is specified, and any action fails because the
caller lacks permission, then the failure is ignored.  This is so that
the caller can do "create all xyz; movepid all xyz" to do so for all
hierarchies for which he is allowed to, without having to do extra work.
If there is a better default behavior, I'm open to suggestions.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
update api version

so userspace can detect whether cgmanager can handle multiple
controllers.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>