XPS, DM: add SkDocument::CreateXPS

-   SkDocument::CreateXPS() function added, returns NULL on non-Windows OS.

-   DM: (Windows only) an XPSSink is added, fails on non-Windows OS

-   DM: Common code for PDFSink::draw and XPSSink::draw are factored into
    draw_skdocument static function.

-   SkDocument_XPS (Windows only) implementation of SkDocument via
    SkXPSDevice.

-   SkDocument_XPS_None (non-Windows) returns NULL for
    SkDocument::CreateXPS().

-   gyp/xps.gyp refactored.

-   SkXPSDevice::drawTextOnPath removed (see http://crrev.com/925343003 )

-   SkXPSDevice::drawPath supports conics via SkAutoConicToQuads.

Review URL: https://codereview.chromium.org/963953002
diff --git a/dm/DMSrcSink.h b/dm/DMSrcSink.h
index 8cd92a6..faa3333 100644
--- a/dm/DMSrcSink.h
+++ b/dm/DMSrcSink.h
@@ -119,6 +119,15 @@
     const char* fileExtension() const SK_OVERRIDE { return "pdf"; }
 };
 
+class XPSSink : public Sink {
+public:
+    XPSSink();
+
+    Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const SK_OVERRIDE;
+    int enclave() const SK_OVERRIDE { return kAnyThread_Enclave; }
+    const char* fileExtension() const SK_OVERRIDE { return "xps"; }
+};
+
 class RasterSink : public Sink {
 public:
     explicit RasterSink(SkColorType);