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.
Added a check if we start with the keyword "bundle" or "body" + unit test
Improve autotest to fail also when cf-agent execution fails.
Fixing parsing of lists passed through use_module remine #2239
Removed invalid comment and superfluous declaration.
Merge pull request #737 from jimis/win32

Removed invalid comment and superfluous declaration.
Merge pull request #734 from jeffali/quickfix/parsemachine3

Fixing parsing of lists passed through use_module redmine #2239
Merge pull request #736 from maciejmrowiec/master

Fix promise state tracking and compliance stats.
Acceptance test for pull #734. re use_module lists parsing.
Merge pull request #738 from jeffali/accept/2239

Acceptance test for pull #734. re use_module lists parsing.
master -> 3.6
Don't display help if avahi is not installed on the machine.
Merge pull request #740 from maciejpatucha/master

Don't display help message when Avahi is not installed on the system.
policy distribution host is not in vocabulary
Fix findhub test.
Fixed a binary incompatibility between nova and core.

The function signature did not match, and therefore the stack would
get corrupted when calling the core function StartServer() from nova.
Merge pull request #742 from kacfengine/windowsFix

Fixed a binary incompatibility between nova and core.
Don't stat cf_null files when checking for new promises.