Correct behavior of thread suspension around Raw monitors

The interaction between raw monitors and thread suspension was
different than some real-world agents expected. Real-world agents rely
on the RawMonitorWait function acting as a suspend point.

Changed the raw-monitor implementation to match this behavior.

Add tests for this behavior and for the behavior of RawMonitorExit
(which does not act as a suspend point).

Bug: 66904725
Bug: 62821960

Test: ./test.py --host -j50
Test: ./art/tools/run-libjdwp-tests.sh --mode=host

Change-Id: Ibaed6a7e6910b7b612f0fb1313958857fbe54595
17 files changed