Unit test for concurrent access to local storage (supports TC and LMDB)
Deprecate logging contexts to local database
Add string set serialization test
Remove leftover comment.
(cherry picked from commit f957351e725c347bbacb39f7e552625f6f5c6235)
Fix cf-serverd not reloading policies when they have changed.

The root of the problem was that the code to check for updated
promises was shared between cf-agent/cf-promises and the daemons, but
they have different semantics. cf-agent/cf-promises need to check
whether any files have changed so they can update
cf_promises_validated. To do this, a check that compares
cf_promises_validated to each file in inputs is needed, which is what
the existing code is doing.

The daemons however, need to compare the modification time of
cf_promises_validated against the time that they last reloaded the
policies, which is a value that should be kept in memory.

This was fixed by running a simple stat in the daemons and comparing
that to the time of the last seen cf_promises_validated. Also made
sure that cf-agent is the only one updating the cf_promises_validated
file. It's not the daemons' responsibility to do this.

Redmine #3809.
(forward-ported from commit 19c790c1f11eda9b84ced6bc09569e02b7958024
in 3.5.x.)

Conflicts:

	cf-execd/cf-execd.c
	cf-serverd/cf-serverd-functions.c
	cf-serverd/cf-serverd-functions.h
	libpromises/generic_agent.c
	libpromises/generic_agent.h
Force cf-agent to be the only one to write cf_promises_validated.

This is so that the separation is clear: cf-agent writes the file, the
daemons read the file.
Don't use global IPADDRESSES in addr_lib

This is in preparation for move of IPADDRESSES to EvalContext.
Don't use IPADDRESSES in cf-execd-runner subprocess

Instead pre-calculate ip addresses header in parent and pass
it in ExecConfig struct to a child.

This is in preparation for moving of IPADDRESSES to EvalContext.
Move IPADDRESSES to the EvalContext struct

This also makes memory management for this list simpler.
db_load test does not work with lmdb
Merge pull request #1178 from dottedmag/refactoring/encapsulate-ipaddresses

Refactoring/encapsulate ipaddresses
Merge pull request #1180 from jeffali/db_load_problem

db_load test does not work with lmdb
Encapsulate EvalContext->eval_options
Encapsulate EvalContext
Rename env_context.[ch] to eval_context.[ch]
Merge pull request #1181 from dottedmag/refactoring/encapsulate-eval-context

Refactoring/encapsulate eval context
Declare and initialize Attribute struct wherever possible

This change mostly gets rid of = { {0} } initialization.
Rename confusing variable 'classlist'

It actually holds a monitoring data to be written to the file, so name it so.
Group LoadSlowlyVaryingObservations together with other mon-related code
Fix cf-execd not reloading network and monitoring data

Environment reload was a huge bunch of copy-pasted-edited code,
so not all subsequent changes were applied to all agents at once.
Fix it by ensuring all agents unconditionally reload environment
in the same fashion.