unit tests for ObjectContext read/write locks

unit tests for the ObjectContext methods ondisk_write_lock,
ondisk_write_unlock, ondisk_read_lock and ondisk_read_unlock.

A class derived from ::testing::Test is created to with two
sub-classes ( Thread_read_lock & Thread_write_lock ) to provide a
separate thread that can block with cond.Wait().

usleep(3) is used in the main thread to wait for the expected side effect
with increasing delays ( up to MAX_DELAYS ).

http://tracker.ceph.com/issues/5487 refs #5487

Signed-off-by: Loic Dachary <loic@dachary.org>