Thread-safe once init functionality (win32, posix)

Add a CRYPTO_ONCE abstraction (like pthread_once()) for thread-safe
self-initialization of thread ID, lock, dynlock, and atomic addition
callbacks, as well as for automatic and thread-safe initialization of
engines.
Provide native THREADID implementation
Provide native lock implementation (win32, posix)

TODO:

 - do the same for dynlocks
 - consider rw locks (SRW on Windows, rwlocks on POSIX) instead of
   exclusive locks
Provide a dynlock implementation (win32, posix)
Thread-safely pick and init a default RAND method
Best effort fork-safety in default RNG

OpenSSL library functions are generally not async-signal-safe.  There's
little point trying to make them async-signal-safe.  But there may be
apps which use OpenSSL, fork(), then continue using OpenSSL on the child
side of the fork without problems.  This patch tries to re-seed the RNG
on first use in the child just in case there is such an app.

We might want to also do this at a higher layer (i.e., in rand_lib.c
instead of md_rand.c).
RAND_poll() immediately after selecting a def RNG
Document self-initialization of thread callbacks