<h2>Misc Functions</h2>

 ap_context_t *ap_initialize(void *)
      Initialize apr so it can be used by the program.
    Arguments:
      arg 1)  A pointer to any program specific data
      return) An apr context type.  The first field in this is ALWAYS an 
              ap_pool.  NULL on failure.
NOTE:  This is NOT an abstract type.  This is apr specific, and the pools may
       be abstract, but the context is constant acrosee platforms, so programs
       can access the internals of this structure.  The default is that this
       context is neither thread-safe nor cancel-safe (see below).
       The prog_data field is basically thread-local storage, so there will be
       no OS specific TLS within APR.

 ap_status_t ap_set_signal_safe(ap_context_t *, ap_int16_t)
      Should the apr functions using this context be signal-safe?
    Arguments:
      arg 1)  The context in question.
      arg 2)  Bool value.  1 means signal-safe, 0 means non-signal-safe.
      return) APR_SUCCESS
 
 ap_status_t ap_set_cancel_safe(ap_context_t *, ap_int16_t)
      Should the apr functions using this context be safe for asynch
      thread cancelation?
    Arguments:
      arg 1)  The context in question.
      arg 2)  Bool value.  1 means cancel-safe, 0 means non-cancel-safe.
      return) APR_SUCCESS

 ap_create_sub_context(ap_context_t *, void *)
      Create a sub context.  (Includes creating a sub pool.
    Arguments:
      arg 1)  The context to be the parent.
      arg 2)  New program specific data for the child context.  If NULL,
              it will inherit the data from the parent.
      return) a new context, complete with new sub_pool.  Inherits safeness
              features from the parent.
 
 ap_exit(ap_context_t *)
      Destroy a context and all sub_contexts.
    Arguments:
      arg 1)  The context to destroy
      return) APR_SUCCESS
    
