Adding cf-isalive

Per @zzamboni request
See https://groups.google.com/forum/#!topic/help-cfengine/NmyIOyUMLxw
Applied @ediosyncratic suggestions
Merge branch 'master' into cf-isalive
Support for CFEngine 3.6
Updated with latest version
Correct vzps usage

Conflicts:
	libpromises/cf3.extern.h
	libpromises/cf3globals.c
	libpromises/classes.c
	libpromises/processes_select.c
Clarify the end-steps of WaitForIncoming().
Dumb down some simple code.
Wrap HACKING.md where lines exceed 78 columns.
HACKING.md: add do-while exception, and rewrap some text around it.
Correct test for openvz support
Merge pull request #1940 from ediosyncratic/return-fix

Clarify the end-steps of WaitForIncoming().
Merge pull request #1948 from peckpeck/openvz_support

Openvz support
Advance ap if socket(2) fails

In the case where socket(2) fails in SocketConnect, ap will advance,
causing an infinite loop.

https://dev.cfengine.com/issues/6560
Temporary fix: inline the suppress/soft list evaluation.

This works round problems with @vohi's attempts to make variable
expansion less broken; it does so by not exercising what broke in the
course of trying to fix everything else.  We should revert it as soon
as we have a proper fix for that.
Merge pull request #1952 from worr/bug/socketconnect-loop

Advance ap if socket(2) fails
Correct the early/late distinction logic in stime_range.cf

I'd correctly documented, in the comments, the comparisons needed; but
I'd got the tests the wrong way round in the policy language code.
Clarified a comment earlier, while I was fixing that.
Merge pull request #1957 from ediosyncratic/stime-test-fix

Correct the early/late distinction logic in stime_range.cf
Acceptance test for nested list expansion.

Covering various cases that have been problematic:

- nested lists where one list combination will be empty
- expansion of foreign lists
- passing of empty lists into methods as parameters

See Redmine #6553
Follow up to fixes for redmine/6553

With the previous fix, iteration skips the entire promise if
any of the lists to be iterated over is empty. This leads to
incorrect behavior in case of nested lists, where one of the
combinations of lists would be empty. Acceptance test addition
covers this case as well now.

The fix is now more intrusive. We don't include empty lists
any longer when parsing the string during expansion. Instead,
abort expansion, and skip this particular promise iteration.

The previous fixes remain in place.