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.
Fix missing "promise kept" status for the last line in a file.

For the last line we shortcut out using MatchRegion, but previously
we did not set the promise status.

Fixes issue 2943.
Fix "changes" promise not receiving status when file is missing.

Fixes issue 2820.
Remove repeated code section.
Switch to using NOTICE log level for file change messages.

Otherwise the message is preceded with an error tag, which is not
really the case.
Merge pull request #798 from kacfengine/changes_with_depth_search

A few cleanups for files with changes promises
Merge pull request #793 from kacfengine/match_region_bug

Fix missing "promise kept" status for the last line in a file.
Merge pull request #795 from kacfengine/issue-2820

Fix "changes" promise not receiving status when file is missing.
Revert "Fix missing "promise kept" status for the last line in a file.

This reverts commit b626ba47d5243894bd7cd25d17cc15ff023007d9, which caused
failures in ./10_files/04_match/kept_promise.cf.kept_promise.cf
Remove non-ascii character, and obsolete statement in which it's used
Handle specific Debian path: /etc/init.d/ssh instead of /etc/init.d/sshd
cfengine_stdlib.cf: split into 3.4/3.5/3.6 versions.  Add sys.cfengine_version_{major,minor,patch} and use it to load the right libraries for 3.6 and later.  Split by promise type for 3.5 and 3.6.
Merge pull request #784 from tzz/stdlib/split2

Split cfengine_stdlib.cf into pieces for 3.5.1 and higher and provide fallback for 3.5.0 and older
Remove texinfo markers that confuse liquid - try markdown
Fix missing "promise kept" status for the last line in a file.

For the last line we shortcut out using MatchRegion, but previously
we did not set the promise status.

Fixes issue 2943.
Autotest fails because of cached bundle result. Fix by splitting.
Merge pull request #805 from kacfengine/master

Reapply fix for issue 2943, and fix the failing test
Ignore result of this test for now.

After library split, promises.cf depends on cfengine version classes
and sys.version variables to be set.