Add a generic namespaced lock queue.
Add a generic namespaced lock queue.

This provides a LockQueue and LockKey pair.  The LockQueue maintains
the actual lock while a LockKey is required to acquire and release
the lock.

The LockKey is meant to define a heirarchy (or namespace) for keys
to live in.  Any requests for non-conflict (parallel) heirarchies
are granted while the rest block.

stdweird/aquilon,quattor/aquilon,guillaume-philippon/aquilon,stdweird/aquilon,guillaume-philippon/aquilon,quattor/aquilon,guillaume-philippon/aquilon,quattor/aquilon,stdweird/aquilon