Redmine#3576: acceptance test to ensure cf-promises only evaluates common bundles
Redmine#3578: acceptance test to ensure execresult is only executed once
Test: read long files (regression after 3.5)
Check compiler name for -Wno-duplicate-decl-specifier

Just passing -Wno-duplicate-decl-specifier does not cause GCC to abort.
Cosmetics
Merge FileRead/FileReadMax into single function

This change simplifies error reporting and avoids unreliable checking
of stat(2) to preallocate buffers. (Closes: Redmine #3658).
Merge pull request #1086 from dottedmag/test/read-long-files-broken

Fix reading long files using readfile() by consolidating existing file-reading functionality
Expose begin/end information from StringMatch
Move plain-string comparison out of StringMatch[Full]

This makes semantics of those functions cleaner.
StripPatterns: use StringMatch, not BlockTextMatch

BlockTextMatch sets $(match) context, which is not needed in this
case.
Don't use BlockTextMatch in RlistFromSplitRegex

BlockTextMatch populates $(match) scope, which should not be
touched in RlistFromSplitRegex (closes Redmine #1875).
Merge pull request #1096 from dottedmag/bugfix/slow-readstringlist

Fix slow readstringlist() on large files
Only record promises in the enterprise database when -r is supplied.

'-r' enables SHOWREPORTS
Merge pull request #1098 from awsiv/master

Only record promises in the enterprise database when -r is supplied.
ChangeLog update
Include 3.5.2 changes
Create timeout.h out of prototypes3.h
Split SetReferenceTime into SetReferenceTime/UpdateTimeClasses

UpdateTimeClasses only deals with evaluation context, SetReferenceTime only
deals with setting global variables.
Remove unused variable
Split environment detection code into separate library libenv/

Note the splits:
  sysinfo.h -> known_dirs.h (most of the code uses only known_dirs.h)
  timeout.h -> time_classes.h (timeout.h is now EnvContext-free)
  unix.h -> unix_iface.h (non-detect-related code is kept in unix.h)