stringify CU candidates that can become $?FILES

When we let slip an IO::Path into $?FILES the Label.new code will explode. Beware.
Use "dirname" instead of "directory"
Implement IO::Spec.dirname (instead of .directory)

.directory will still work, but is deprecated
optimize $?USAGE

We only generate the USAGE message in case we need it, and then the new code only
takes .13s where the old code took .75s (on windows)
Extend DISTRO and KERNEL for OpenBSD and NetBSD
(and some aspects of FreeBSD)