kernel - Refactor kern_mutex (mtx* functions)
* Refactor kern_mutex in order to support asynchronous lock requests,
which hammer2 is going to need. kern_mutex already supports abortable
locks.
* Add callback fields to the mtx_link structure.
* Use the mtx_link structure for shared locks in addition to exclusive locks,
allowing asynchronous callbacks for shared locks and exclusive locks.
* Make the locking flags more deterministic.
* Redo the typedefs to be more like hammer2. Typedef the structures rather
than pointers so the typedef names can be used for structural embedding.