Harden the native stack dumping decision.

We've seen monkey crashes in this code, though I haven't been
able to reproduce them in my own SIGQUIT stress tests. Address
the two most likely causes of trouble: dumping the signal catcher's
own thread (which will always be runnable), and assuming that the
Method* pulled from the save area is non-NULL.

Bug: 8596028
Change-Id: I59d1dcb2264a774d8416d50a5f77a06c70d37c59
Fix flakiness in test 080-oom-throw.

The problem was that the instance test could potentially fill the
heap close enough to the edge that you'd hit a follow-on OOME in
the attempt to print the success message, causing the test to fail.

I've also made the code a bit clearer while I'm here.

Bug: https://code.google.com/p/android/issues/detail?id=54114
Change-Id: I39127c3ea6a99940fa66ad8763bbbf6c01d308ef
More native stack dump hardening.

Threads just starting up or shutting down might not have any managed
stack frames, leading to a NULL "currFrame" frame pointer in the
interpreter stack.

Bug: 8596028
Change-Id: Ie24c8d5f8e78a5abe882a9e639046c03abb91649
Work around a dalvik JDWP/GC deadlock.

Also add a few missing TEMP_FAILURE_RETRYs that can cause dalvik to
incorrectly decide that the debugger connection has been broken.

Bug: 8191824
Change-Id: I791b514c6bec1ca634a65d9f87c5fa06da01b5ed