SkStream: DynamicMemoryWStream gets writeToAndReset

This is similar to copyToAndReset().

Also use this in SkPDF, for minor memory savings:
Single-threaded DM's peak RSS drops from 239MB
to 228MB.

Change-Id: I352a980e6dd54eb05d74cd057bd50e02312753b0
Reviewed-on: https://skia-review.googlesource.com/17714
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
diff --git a/include/core/SkStream.h b/include/core/SkStream.h
index b4875ad..01fd82a 100644
--- a/include/core/SkStream.h
+++ b/include/core/SkStream.h
@@ -384,11 +384,14 @@
 
     /** More efficient version of read(dst, 0, bytesWritten()). */
     void copyTo(void* dst) const;
-    void writeToStream(SkWStream* dst) const;
+    bool writeToStream(SkWStream* dst) const;
 
     /** Equivalent to copyTo() followed by reset(), but may save memory use. */
     void copyToAndReset(void* dst);
 
+    /** Equivalent to writeToStream() followed by reset(), but may save memory use. */
+    bool writeToAndReset(SkWStream* dst);
+
     /** Return the contents as SkData, and then reset the stream. */
     sk_sp<SkData> detachAsData();