Prefixing error messages

You can use the new `cork_error_prefix` function to prepend some
additional text to an existing error message.

This patch also updates the internal implementation to clean up after
itself better.  Before, we would grab a thread-local `cork_error`
instance for each thread, but didn't clean up those instances.  Now, we
maintain a (thread-safe) list of all of the `cork_error` instances that
have been allocated, and register a (process-level) cleanup function
that cleans all of them up.