Extend SimpleWrapper system and use it to implement wrappers for asctime,
ctime, strftime, gmtime, localtime, and mktime.

Add the above functions to the CStdFunction format select, and to the list of
intercepted functions. Also add an alias for \01_strftime -> strftime.

In SimpleWrapper.hpp, moved the base WrappedArgumentChecker and the base
WrappedArgumentRecorder above the argument wrapper definitions. The
specializations for these classes should immediately follow the argument wrapper
for which they are specializing, so that all of the logic for a given argument
wrapper is consecutive in the file.

Add a new argument wrapper for C-String inputs, WrappedInputCString, which can
be created from a char const * using wrapInputCString().

For WrappedOutputPointer arguments, check that the the memory exists and is
writable.

Add a new argument wrapper for C-String outputs, WrappedOutputCString, which
can be created from a char * using wrapOutputCString(). This wrapper supports
the IgnoreNull flag, and can also be set to have a MaximumSize, which is the
maximum number of bytes which will be written out. If the MaximumSize is not
set, then it will be std::numeric_limits<std::size_t>::max(). The checker for
this wrapper ensures that the maximum number of bytes are available at the
pointer's destination, and that they are writable. The recorder for this
wrapper will find the C-String at the pointer's destination and record it as an
untyped state (including the terminating NULL byte).

Add result state recording to the SimpleWrapper system. This is used to record
state information which is "revealed" by the result of a function, e.g. if a
function returns a pointer to a static (or thread local) internal object. The
SimpleWrapper::operator() has been changed so that a result state recorder
object is required as the third argument (immediately following the success
predicate and preceding any original function arguments). Currently there are
three result state recorder classes:
 - ResultStateRecorderForNoOp, if no recording is required.
 - ResultStateRecorderForStaticInternalCString.
 - ResultStateRecorderForStaticInternalObject.

The use of all of these new features can be seen in the accompanying
implementations of interceptors for asctime, ctime, strftime, gmtime, localtime,
and mktime.