[metrics] Dump ArtMetrics on SIGQUIT

ART now writes a current snapshot of its internal metrics in response to
a SIGQUIT.

Example output:
```
*** ART internal metrics ***

ClassVerificationTotalTime: count = 863833
JitMethodCompileTime: range = 0...1000000, buckets: 244,5,1,0,1,0,0,0,0,1,0,0,0,0,0

*** Done dumping ART internal metrics ***
```

This includes a new StreamBackend, which is used to write ART metrics to
an output stream in a human readable format.

Bug: 170149255
Test: m test-art-host-gtest-art_libartbase_tests
Change-Id: Iaf8bcee5a4993e70ac4e36940591a734fe1a6697
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index 70e3ae3..9c0b4df 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -2020,6 +2020,7 @@
   }
   DumpDeoptimizations(os);
   TrackedAllocators::Dump(os);
+  GetMetrics()->DumpForSigQuit(os);
   os << "\n";
 
   thread_list_->DumpForSigQuit(os);