Changing SkDeferredCanvas to use factories for creation

The objective of this change is to remove all calls to 
SkCanvas::setDevice. The factory API is hidden behind
a build flag in order to ease the roll into chromium.

A side-effect of the factory pattern is that it will
no longer be possible to allocate a SkDeferredCanvas on
the stack.  This changes nothing for chrome, but it
impacts skia test programs.

Review URL: https://codereview.chromium.org/16040002

git-svn-id: http://skia.googlecode.com/svn/trunk@9298 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/benchmain.cpp b/bench/benchmain.cpp
index 543da27..4d385a2 100644
--- a/bench/benchmain.cpp
+++ b/bench/benchmain.cpp
@@ -820,7 +820,12 @@
                 switch(benchMode) {
                     case kDeferredSilent_benchModes:
                     case kDeferred_benchModes:
-                        canvas = new SkDeferredCanvas(device);
+                        canvas = 
+#if SK_DEFERRED_CANVAS_USES_FACTORIES
+                            SkDeferredCanvas::Create(device);
+#else
+                            SkNEW_ARGS(SkDeferredCanvas, (device));
+#endif
                         break;
                     case kRecord_benchModes:
                         canvas = pictureRecordTo.beginRecording(dim.fX, dim.fY,