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
Move long running test case earlier to speed up parallel testing.

This is purely an optimization. Since the test case is long running,
it should occupy a job slot early in the process, so it can chew on it
for a while, while the rest of the tests are running.

Also fix a typo in the path that has been bugging me for ages.
Make sure all relevant variables are inherited by sub invokations.

This fixes parallel test runs in sub projects.
Make sure serial tests are run, even if parallel ones fail.

This moves the serial tests out of the makefile, since make would
refuse to run them if any parallel tests had failed.
Catch errors resulting from miscalculating the number of test results.

This will save us if we make a mistake in testall which leaves out
some test results.
Testcase for defaults promises

Classes promises trigger a re-evaluation of the bundle's variables
to resolve dependencies quickly. This overrides and thus breaks defaults,
promises which have already been evaluated.

Why the test case has to be so complicated, testing both for positive
and negative outcome explicitly, is beyond me. Probably because bundle
return values are not just terrible to use, but also implemented in
some fascinatingly complex way.

See redmine 5748
Evaluate defaults promises again after classes promises

Since we re-evaluate variables to resolve dependencies between
classes and variables quickly, we also need to re-evaluate defaults
promises again.

Fixes Redmine 5748

This includes the refactoring from e92efc5458117c4988ddb8c815c72a017bd5f981
Avoid unwanted writing of measurements

Only write the performance of copy-operations if the corresponding
files promise has a measurement_class set.

See redmine #6523
Don't write bundle performance to disk unnecessarily

Timing measurements for bundles is a help for the policy writer,
and not particularly relevant in automated CFEngine runs. So skip
the writing unless the log level is at least INFO.
Merge pull request #1979 from vohi/redmine/5748

Fix Redmine/5748 - make defaults promises work in bundles using classes promise
Avoid read/write access to Setuid storage

Move code that is only required if setuid or setgid permission
attributes are modified to the right place. No need for every
files promise to touch the disk for this.

Don't save the list if code hasn't modified it.

A future improvement might be to load the list at agent startup
and flush it at shutdown, but assuming that setuid/setgid modifications
are the exception, this shall suffice for now.
Merge pull request #1981 from vohi/redmine/6523-performancedb

Redmine/6523: don't hit performance database unnecessarily
Merge pull request #1980 from vohi/redmine/6523-setuid

Redmine 6523: Avoid read/write access to Setuid storage
Merge pull request #1738 from lra/cf-isalive

Adding cf-isalive
Don't reuse overspill from an early ps field as part of a later one.
Handle ps fields that extend right under next header.

See comments in commit.  Also deals with the case where one field
appears to extend right under the next's header, but it's really the
next extending left under the first's header.