detect aufs/overlayfs/etc. dynamically when creating containers

This replaces the previous logic of checking for Ubuntu, and specific
versions, with dynamic detection of whether to use aufs or overlayfs.

If the filesystem is detected as aufs, it makes sure not to try mounting aufs
or overlayfs. This is because aufs cannot be mounted on a branch within aufs,
and OverlayFS *will* mount, but will fail to delete any files. This is because
aufs does not support xattr, which OverlayFS uses for whiteout.

Both aufs and overlayfs will be attempted, in that order. If neither can be
used, we fall back to the basic yet portable bind-mounting + copying strategy.

/cc @frodenas @mkocher