selinux: make use of cleanup gcc magic
mac: rename all calls that apply a label mac_{selinux|smack}_apply_xyz(), and all that reset it to defaults mac_{selinux|smack}_fix()

Let's clean up the naming schemes a bit and use the same one for SMACK
and for SELINUX.
smack: rework smack APIs a bit

a) always return negative errno error codes
b) always become a noop if smack is off
c) always take a NULL label as a request to remove it
smack: never follow symlinks when relabelling

previously mac_smack_apply(path, NULL) would operate on the symlink
itself while mac_smack_apply(path, "foo") would follow the symlink.
Let's clean this up an always operate on the symlink, which appears to
be the safer option.
smack: rework SMACK label fixing code to follow more closely the semantics of the matching selinux code
selinux: drop 3 unused function prototypes
smack: we don't need the special labels exported, hence don't
selinux: rework label query APIs

APIs that query and return something cannot silently fail, they must
either return something useful, or an error. Fix that.

Also, properly rollback socket unit fd creation when something goes
wrong with the security framework.
selinux: simplify and unify logging

Normally we shouldn#t log from "library" functions, but SELinux is
weird, hence upgrade security messages uniformly to LOG_ERR when in
enforcing mode.
selinux: clean up selinux label function naming
label: don't try to create labelled directories more than once
label: unify code to make directories, symlinks
label: move is_dir() to util.c