Rethinking locks to make them simpler:

Acquiring a lock:
	a) if it is thin and free, acquire it
	b) if it is not free, set the contention bit, create a fat monitor, lock the owning thread's node, add the monitor to the wait list

Releasing a lock:
	a) if it is thin, decrement it, if is being released check contention bit. If set signal all waiting for this object, make it 0


