Implementing a new $(sys.uptime) variable (Mantis #1134)

The $(sys.uptime) variable contains the number of mintues the system
has been up and running. It uses various techniques depending on the OS
platform to find the system uptime:

* sysinfo() for Linux platforms
* kstat() for Solaris platforms
* pstat_getproc() for HP-UX
* sysctl() for BSD platforms

Any platform which doesn't have one of these methods available will default
to a stat(/proc/1) to get the create time of the init process, which falls
within a few seconds of the boot time of the system. (Even though Linux and
Solaris have /proc, this method is not used on those platforms even as a
fallback.)

If any of these approaches fail, the routine falls back to running the
"/usr/bin/uptime" or "/bin/uptime" command, and its output is parsed into
days, hours, and minutes with a PCRE regexp, and converted to a usable time
for the variable. Thanks to Ted Zlatanov for the suggestion: https://github.com/cfengine/core/pull/46#issuecomment-10066632

This popen() approach is unlikely to be used very frequently - probably only if
the /proc filesystem isn't mounted - but it's a decent backstop to give a
system the best possible chance to set $(sys.uptime) successfully.

Two other closely related variables are introduced: $(sys.systime) and
$(sys.sysday). The former is simply the result of the time() system call,
which is useful in manipulating timestamps in HP-UX TCB password databases,
for example, and the latter is that value divided by 86,400 - the number of
seconds in a day - expressed as an integer. This is, of course, useful in the
/etc/shadow file to indicate the password change date.

Three new documents are added in docs/reference/vars to describe the
$(sys.uptime), $(sys.systime), and $(sys.sysday) variables.
BSD <sys/param.h> include is required for <sys/sysctl.h> header checks

See also jail.h, sys/mount.h checks.
64-bit time_t snprintf; cf_popen needs pipes.h - for sys.uptime var

The cf_popen() and cf_pclose() calls now need to have pipes.h included,
because it was factored out in commit 5be64d09bc4c9c9659d53d2b5bf61286f768acbf.

The time_t type needs the proper printf format to support both 32- and 64-bit
platforms. On older platforms which don't have a C99-compliant snprintf, the
"pub/snprintf.c" replacement is used, so that a "%jd" format can be used even
on such platforms. Normally they would use the PRIdMAX definition from
inttypes.h. See commit f6ba42d5b2988be1f94ee4e55baa174fd7906362.
Improve autotest to fail also when cf-agent execution fails.
The epoch calculation for stime inrange calculation was wrong 1 day to early. Therefore processes are killed that shouldn't be killed.
Suspect due to wrong calculation of leap year.  the code is complicated and replaced it by mktime() calls

Also adjusted the verbose message and show the calculated process epcoch time, eg:
    Selection filter matched absolute 'STIME/START' = '10:47(1370594820)' in [1339065675,1370598075]

I like the defintion of leap day, from the dutch wikipedia:
"In different cultures (such as Norway) Leap traditionally a day on which women men may invite a date. Also the marriage
proposal is subject. February 29, traditionally the role reversal"
Feature 2930: Eliminate hardcoded /bin/echo in acceptance tests

To improve cross-platform compatibility, eliminates acceptance test path
hardcoding of /bin/echo, as well as adjacent "mkdir" an "ln" commands in
10_files/02_maintain/staging/copy-select-link-dereference.cf, taking
advantage of the mechanism in the "G" bundle which finds the correct
local-platform paths for a list of common commands.
Replace hardcoded command paths in acceptance tests with $(G.cmd)

The "G" bundle provides full path names for various commands, in order
to eliminate the need to hard code pathnames in the acceptance tests.
Some older operating systems may have Perl installed in /usr/local/bin,
for example.

This commit updates all acceptance tests to make use of the $(G.cmd)
variables for each of the listed commands in order to eliminate
hardcoding of command paths in order to increase cross-platform
compatibility.
Handle ntpd service
Enable colorized output --color=never,auto,always (-C)

Defaults to 'never'
Ensure short option works for --color, default to 'auto' if flag is used
Fixed wrong return value and missing member copy.

Fixes issue 2965.
Merge pull request #756 from kacfengine/issue-2965

Fixed wrong return value and missing member copy.
Additional fix for issue 2965.

CacheStat returns tristate (succeeded/failed/unknown), not bool, so
tweak return values yet again.
Merge pull request #757 from kacfengine/issue-2965

Additional fix for issue 2965.
Rename examples. They are not unit tests, so remove unit_ prefix.
Temporary templating bundle should be placed in default namespace.

Add acceptance test. Close #2928
Injectable example code for documentation.
Remove/correct arbitrary classes from reports promises in examples
Fix non-root cf-agent flooding syslog (redmine #2980).
Enable non-root cf-agent logging to syslog.