hooks: Use SHM between hybris instances for pshared mutex and condition

When some android code uses a process-shared mutex and/or condition, hybris should also use process-shared mutex/condition. To do so, we have to use a shared memory segment to store the corresponding glibc mutex/conditions.

Current limitations:
 - There is a maximum number (1000) of mutex and conditions that can be allocated
 - The shared memory segment is located at a pre-determined address (0x50000000), to be able to identify which mutexes are located in a shared memory region.

Signed-off-by: Christophe Chapuis <chris.chapuis@gmail.com>
hooks: implement a more dynamic and reliable management of pshared mutex/cond/rwlock

 * The memory region is now mapped dynamically, and not using a predefined address
 * The pointer is considered as an shm offset if it is above 0xFF000000
 * The allocation can mix pshared mutex, conditions or rwlock
 * The shared memory management has been isolated in a separate file, hooks_shm.c/.h
 * The SHM segment can grow dynamically on-demand, up to 16MB of data

Signed-off-by: Christophe Chapuis <chris.chapuis@gmail.com>
hooks: implemented pthread_cond_timedwait_relative_np correctly

 * it was previously wrongly hooked to  pthread_cond_timedwait, but the timespec argument meaning is not the same (absolute versus relative time)

Signed-off-by: Christophe Chapuis <chris.chapuis@gmail.com>
Merge pull request #49 from Tofee/work

hooks: various improvements of handling of process-shared conditions and mutexes