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.
Look at NI instead of PRI in ps output on Linux

The PRI field is the Linux kernel scheduling priority which is
different from the niceness of a process (which is what a system
adminitrator and policy-writer is likely to want to select upon). This
value is almost always larger than 20, so it isn't selectable if the
defined range per the documentation is -20,+20 anyway.
Out-of-tree builds broke again, fix.
Fix: display file mode in octal, not decimal
Warn on unknown platforms so we get feedback.
Increase polling SLEEP_POLL_TIMEOUT from 10us to 10ms.

The idea is that if a signal takes time to be delivered, it's because the
system is under heavy load, so don't flood the process. Also a sysadm won't
see thousands of kill lines on his strace logs. The extra delay is
insignificant, this should happen rarely, only when the DB has a PID that is
not cleared.
minor type
typo
gethostname() has non-standard declaration on Solaris 8-9.
INFINITY undefined on Solaris 8
AIX missing strrstr() and mkdtemp()
Merge pull request #502 from basvandervlies/master

removed comment that was invalid
Check RvalType as part of ConstraintCheckSyntax
Rename BodySyntax -> ConstraintSyntax

Because, that's what it is.
Adding getifaddrs() fallback to collect MAC addresses on BSD systems
Add scope attribute to classes promise. RM #1941

By setting scope => namespace, it's possible to define a global class
from an agent bundle, and a local class in a common bundle.

Includes testcases for new scope attribute.
Added check for arglist type for bundle and body. Report error if not valid type
Merge pull request #503 from basvandervlies/arglist_check

Added check for arglist type for bundle and body.