More Robust cogd/clockd testing

New test-only binaries, TEST_cogd and TEST_clockd, have some compiled
in features that we want in testing, but not in the real world,
including:

- A 60s failsafe that will terminate the process
- Single-run clockd (exit after first ERROR or BYE PDU sent)
- No root UID/EUID checking in cogd

With this new, better mechanism, previous mechanisms are deprected.
Notably, the COGD_SKIP_ROOT environment variable is no longer supported,
and the super.secret.dev.mode clockd configuration option is ignored.
Handle memory errors with cw_log* and syslog ident

openlog() stores a static reference to the string buffer passed.  In
most use cases, this is okay, since ident is a constant string literal.
In our case, it's part of a config hash that gets freed later (usually).

v2.0.8
cogd CFM run locking

When cogd performs a configuration management run, it should be the only
thing doing so.  If a one-off (cogd -1) run comes in while the scheduled
daemon is going, it will be ignored and a message printed to that
effect.  Likewise, if `cogd -1` is mid-run when the schedule says its
time, the scheduled run should get bumped.

This is done via a lock file, usually in /var/lock/cogd.

v2.0.9
Make clockd/cogd init script more informative

clockd:
- When there is a failure with the configuration or the manifest, print
  that out and refuse to do anything that would compromise a running
  system (like stop/start when we know start will fail)

both:
- Honor Debian's VERBOSE variable, from /lib/init/vars.sh. Setting
  VERBOSE=yes in /etc/default/rcS brings back the output...
Fix missing newline in EXEC.RUN1
Handle epoch versions properly

Previously, cwtool on debian would strip the leading '1:' epoch version
out of a version string like '1:6.6-2ubuntu1'.  This causes much churn
when '1:6.6-2ubuntu1' is the installed version.
Teach pn(1) to read from standard input

`./pn -` now reads from stdin, as one would expect.
Human-readable dates for cogd scheduling messages

These rely on the system-preferred date and time formats.
Improved remediation logging / error detection

- res_file now detect errors like the target being a non-file
- res_dir now detects similar errors, for the target not being a dir

As a side-effect, the predicate style FS.* functions now have 'IS_' in
them, like FS.IS_FILE? (instead of FS.FILE?)
Handle missing lockdir more robustly

Instead of claiming that another process is running, we should error if
we couldn't acquire the lock AND the lock file doesn't exist.  In
testing, this happened when lockdir didn't exist, but it could also
happen if the caller lacks permission to the lockdir, the lockdir isn't
a dir, etc.