core: rework context initialization/destruction logic

Let's automatically initialize the kill, exec and cgroup contexts of the
various unit types when the object is constructed, instead of
invididually in type-specific code.

Also, when PrivateDevices= is set, set DevicePolicy= to closed.
sd-bus: don't use assert_return() to check for disconnected bus connections

A terminated connection is a runtime error and not a developer mistake,
hence don't use assert_return() to check for it.
core: make sure we can combine DevicePolicy=closed with PrivateDevices=yes

if PrivateDevices=yes is used we need to make sure we can still
create /dev/null and so on.