Added a new "bitlock" abstraction.

2 bits out of a 32 bit or 64 bit values can be used as a lock. One for lock
and one to indicate waiters. The waiters are all kept on common lists. The hashing
of lock address to wait list is rather simple and we should put a simple crc lookup
table there instead.