Allow logging::set_inmemory to clear current state

Permit the user to invoke logging::set_inmemory after it has previously
called logging::set_persistency so that the user can clean up any
pending logs when forking a process.
Allow log calls to be made from destructors

Prevent the logging module's global state from being destroyed doing
program shutdown so that we can log other important messages from any
destructors that get invoked.

Yes, this "leaks" a memory object.  No, it does not matter.
Allow passing a datetime::timestamp to set_mock_now

This is for simplicity purposes when the caller needs to reuse the same
mock timestamp for later validation.
Forcibly terminate children on signal reception

Send SIGKILL to all children process groups when we receive an interrupt
instead of gracefully redelivering the signal we got.  We will start to
run test programs directly without the testers indirection, so we need
this.
Allow nesting signals::interrupts_inhibiter - NEEDS TESTS

If code wishes to inhibit signals multiple times, we should let it do
so for simplicity.
Implement various operators for datetime - INCOMPLETE!
Restore the utils/signals/timer module

This was deleted as part of 364c676268e59dbc1e03a81936f1b720356290b7.
Recover the the little bits that can be reused, but rewrite this module
pretty much from scratch to provide a multiprogrammed implementation of
timers.  This will be necessary to support tracking the timeouts of
concurrently executed test cases.
NOT READY: Add executor module without backends
FIX: Add plain executor
REWORD: Add atf executor module

Conflicts:
	engine/executor.cpp
FIX: Modify run_tests to use executor