Revert "Revert "Redmine#6063: add 0-9 A-Z _ to allowed context of module protocol""

This reverts commit 09e23322db65e315834e3c13a82f31bc977fb2e7.
Redmine#6063: refine allowed context of module protocol and test with a regex
Redmine#6063: move context regex out of the code block and rename the variable helpfully
Fix CFLAGS order.
Fix detected flags from ACX_PTHREAD being reset.
Include path should be CPPFLAGS, not CFLAGS.
Redmine#5241: do not reevaluate promises for known classes
Short-circut evaluation of classes promises if class is already set

Close #5241
Acceptance test unstaged
Default bundlesequence to { main }

This removes the need for a body common control to satisfy
a runnable policy. For example a runnable policy may be

bundle agent main {
 reports:
   "hello world";
}

Redmine #4993
Merge pull request #1765 from jimis/minor

Fix detected flags from ACX_PTHREAD being reset.
Redmine#4993: acceptance tests
Merge pull request #1750 from tzz/bugfix/redmine6063-context-names

Redmine#6063: Context name validation is too strict
Add global attributes 'if' and 'unless'

'if' is an alias for 'ifvarclass'. 'unless' is negated 'if'.

Example, suppose we are on Ubuntu,

bundle agent main {
 reports:
  "should not print" if => "!ubuntu";
  "should print" if => "ubuntu";

  "should not print" unless => "ubuntu";
  "should print" unless => "!ubuntu";
}

Redmine #6179

These attributes work like 'ifvarclass' and 'depends_on' in the sense
that they are evaluated before other attributes of a promise. Evaluation
of the rest of the attributes is omitted if the promise is excluded.
Redmine#6179: acceptance tests for if and unless
Redmine#6179: add combined acceptance test for if and unless
readcsv function without limit parameter

Redmine #5624

From Ted:
readcsv(): new function with acceptance test
(cherry picked from commit 5d73f3bc06c6a8e08013b23b96e01a573d801ac7)