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.
cfengine_stdlib.cf: abstract apt-get, aptitude, and dpkg calls to always have the right Debian environment, especially the PATH
Added FreeBSD portmaster package_method
Add SeqShuffle
Add function shuffle(2)
Merge pull request #590 from sigurdteigen/master

function shuffle(2)
Remove generic_agent:WarnAboutDeprecatedFeatures

This is can now be nicely handled by SyntaxStatus warnings
Remove unused global AUDIT
Remove global PUBKEY_DIGEST
Deglobalize ROTATED to files_lib
Deglobalize CFLAST to locks
Deglobalize CFLOG to locks
Merge pull request #570 from tzz/tzz/neilhwatson/apt-PATH-improvements

cfengine_stdlib.cf: abstract apt-get, aptitude, and dpkg calls
+ set_quoted_values with uncommenting first
Restructure a ladder of if/else if/else if/else constructs
Avoid non-portable rand_r in SeqShuffle
Fix wrong enum use in FSWrite
Use Knuth's algorithm for list shuffling