Implement rmlock and sxlock directly using the uhi rwlock API instead
of reusing the rwlock implementation, as reusing the rwlock
implementation gets in the way of WITNESS support.
Merge commit '6dde492479b983dcc89478682f0b9c2bedcfc82c' into passive_receive_adrian
Fix up the new lock types now that the rmlock/sx locks aren't just
calling the rwlock methods.

This should make the witness stuff less .. creepy.