Process cleanup functions

You can now register functions that will be automatically called when
the current process exits, similar to the standard `atexit(3)` function.
Our version differs in that you must provide a priority value for each
function, allowing you to explicitly define the order in which the
cleanup functions should be called.
Initialize cleanup function list at compile time

Before, we used a `CORK_INITIALIZER` function to initialize the linked
list of cleanup functions.  However, this means that you can't register
cleanup functions inside of other `CORK_INITIALIZER` functions, since
there's no guarantee what order they'll be called in.  Instead, we use a
static initializer to make sure the cleanup list is ready to go before
any `CORK_INITIALIZER` functions are executed.
Merge branch 'feature/atexit' into develop

* feature/atexit:
  Initialize cleanup function list at compile time
  Process cleanup functions