configure: split checks for libkmod >= 14

PKG_CHECK_EXISTS won't created a cached variable that later messes with
our PKG_CHECK_MODULES check for an explicit version. Unfortunately,
nesting these checks as the code existed lead to an odd error. Rather,
split the checks apart.

This also improves to the error message when the requisite version
isn't found, and supplies the literal version systemd needs.
core: implicitly create a per-template slice for all instantiated units by default

If no explicit slice is configured for an instantiated unit, create an
implicit one for all instances of the same template.
cgroup: don't move systemd into systems.slice when running as --user instance
cgroup: don't ever try to destroy the cgroup of the root slice

The root slice is after all the root cgroup, so don't attempt to delete
it.
cgroup: simplify how instantiated units are mapped to cgroups

Previously for an instantiated unit foo@bar.service we created a cgroup
foo@.service/foo@bar.service, in order to place all instances of the
same template inside the same subtree. As we now implicitly add all
instantiated units into one per-template slice we don't need this
complexity anymore, and instance units can map directly to the cgroups
of their full name.
update TODO
loginctl: suppress cgroup tree output if cgroup is empty

same for machinectl
systemctl: show cgroup tree if cgroup is empty but has non-empty children

This makes sure "systemctl status user.slice" shows a nice cgroup tree
of all logged in users.
update TODO