add a class for android

This class use busybox for all the commandline tools.
The Android Open Source Project use 'toolbox' for the shell (implemented from scratch by Google).
However toolbox is very limited. Busybox is easily installable on Android and provide a set of tools
much more closer to the standard tools found on the other Unixes.
Redmine 3572: reworked reading of non-fncall values

Made failure to read string as int or real, when specified as such, a
PROMISE_RESULT_FAIL, instead of setting to a bogus value.  Reworked
the block that handles this so as to avoid repetition of code.  This
fixes parsing of simple values from unexpanded variables; a later
convergence pass shall see the variables expanded and succeed.
Includes acceptance tests for general parsing of numbers, the basic
problem and regextract usage.
Moved a test outside a loop to save a waste of time.

In BundleResolve(), looping over promise-types doesn't change the
bundle type; and we did nothing inside the loop unless the bundle type
is "common", so may as well test that before entering the loop,
instead of each time round the loop.  Tidied up a bit, too: split some
long lines, killed a boring blank line.
Compile-fix: use correct formatter for size_t parameter.
We should call FindLock() inside AcquireLock() regardless of boolean ignoreProcesses

- FindLock(cflock) does not only look for the existence of the cflock lock but also creates it if it does not exist.
- This is independent from whether ignoreProcesses is set or not
- It also affects yielding of locks because cflock needs to exist in order to be yielded
tests/acceptance/default.cf.sub: add convenience wrapper
Redmine#4494: acceptance tests for passing slists
Redmine#4620: log less on successful link and return correct status on NOOP
Add acceptance test to check namespaced lists

One namespaced list that is constructed of other lists should be fully expanded.
Ref: Redmine:4445 (https://cfengine.com/dev/issues/4445)
Merge pull request #1394 from ediosyncratic/vars-3572-fix

Fix for part of Redmine 3572, plus some tidy-up.
Merge pull request #1407 from CedricCabessa/android

add a class for android
Several fixes to testall for Windows.

- Add --bindir parameter. This is much more convenient than listing
  each tool separately, but the technical reason is that Windows
  requires all necessary DLLs to be in the same directory as the
  executable. Therefore we cannot merely copy each binary into the
  temporary workdir; we need to copy the whole bin directory.
- Remove unused --no-nova parameter.
- Different GAINROOT default for Windows.
- Use hardlinks on Windows (see comment for why).
- Remove shell IFS setting. It was added because it makes it easier
  to deal with paths with spaces in them, but I believe we have
  covered all those cases with quotes now, and IFS interferes with
  LN_CMD having a space followed by arguments in it.
Merge pull request #1440 from kacfengine/testall_on_windows

Several fixes to testall for Windows.
Merge pull request #1427 from jeffali/fix/lock_fileedits

We should call FindLock() inside AcquireLock() regardless of boolean ignoreProcesses
disable tls_generic_test for solaris
Regex check every admit entry, slow but needed for backwards compatibility

Various small refactorings and cleanups were needed.
Added acceptance tests for admit/deny with regexes.

WARNING: the acceptance tests do not currently work (they erroneously
pass). Reason is that I spawn 2 cf-serverd processes on localhost
listening to different ports, but cf-agent sends everything to the first
one because of bug in connection caching. Submitted redmine #4646.
Merge pull request #1443 from McAtte/disable-broken-tls-test-solaris

disable tls_generic_test for solaris
Change -v to not foreground daemons.
Eliminated some clumsiness in instrumentation code.

When a flag is initialized true, set false by some failure-handling
code and then conditioned on, it can be eliminated in favour of just
having an else to the failure-handler.  Arithmetic with doubles really
doesn't need to cast anything like so much to doubles; anything
multiplied by an overt double (e.g. 1e3) is implicitly converted to
double anyway.