Fix for nexus 5 crashing in GL benches

GLBenches do not expect gl state  to change between onPerCanvasPreDraw and *PostDraw, but we do a clear and sometimes we clear as draw.  This causes us to bind vertex objects / programs / etc.

This change creates two new virtual methods which are called right before and immediately after timing.

BUG=skia:

Review URL: https://codereview.chromium.org/1379853003
diff --git a/bench/Benchmark.h b/bench/Benchmark.h
index 7511726..06d42e8 100644
--- a/bench/Benchmark.h
+++ b/bench/Benchmark.h
@@ -70,13 +70,17 @@
     // Call before draw, allows the benchmark to do setup work outside of the
     // timer. When a benchmark is repeatedly drawn, this should be called once
     // before the initial draw.
-    void preDraw();
+    void delayedSetup();
 
     // Called once before and after a series of draw calls to a single canvas.
     // The setup/break down in these calls is not timed.
     void perCanvasPreDraw(SkCanvas*);
     void perCanvasPostDraw(SkCanvas*);
 
+    // Called just before and after each call to draw().  Not timed.
+    void preDraw(SkCanvas*);
+    void postDraw(SkCanvas*);
+
     // Bench framework can tune loops to be large enough for stable timing.
     void draw(const int loops, SkCanvas*);
 
@@ -112,9 +116,11 @@
 
     virtual const char* onGetName() = 0;
     virtual const char* onGetUniqueName() { return this->onGetName(); }
-    virtual void onPreDraw() {}
+    virtual void onDelayedSetup() {}
     virtual void onPerCanvasPreDraw(SkCanvas*) {}
     virtual void onPerCanvasPostDraw(SkCanvas*) {}
+    virtual void onPreDraw(SkCanvas*) {}
+    virtual void onPostDraw(SkCanvas*) {}
     // Each bench should do its main work in a loop like this:
     //   for (int i = 0; i < loops; i++) { <work here> }
     virtual void onDraw(const int loops, SkCanvas*) = 0;