Fix multilock concurrency when shared by > 1 threads

Instead of raising thread errors when another thread
has locks that the consuming thread wants to use just
block and wait and release the correct locks on release
to match the expected vs observed behavior.

This makes it so that a single multilock object can be
shared by many threads and each thread using the object
will correctly obtain and release as expected...

Fixes bug 1371814

Change-Id: Ia21a05fe9249fa019a09c4f30beeb0770ded5150
Merge "Fix multilock concurrency when shared by > 1 threads"