move visual bench interactive module to timing state machine

BUG=skia:

Review URL: https://codereview.chromium.org/1382883003
diff --git a/tools/VisualBench/TimingStateMachine.cpp b/tools/VisualBench/TimingStateMachine.cpp
index c7f2f13..d7e4cf4 100644
--- a/tools/VisualBench/TimingStateMachine.cpp
+++ b/tools/VisualBench/TimingStateMachine.cpp
@@ -100,19 +100,11 @@
     fLastMeasurement = this->elapsed() / (FLAGS_frames * fLoops);
 }
 
-void TimingStateMachine::nextBenchmark(SkCanvas* canvas, Benchmark* benchmark) {
-    benchmark->postDraw(canvas);
-    benchmark->perCanvasPostDraw(canvas);
-    fLoops = 1;
-    this->nextState(kPreWarmLoopsPerCanvasPreDraw_State);
-}
-
 inline TimingStateMachine::ParentEvents TimingStateMachine::timing(SkCanvas* canvas,
                                                                    Benchmark* benchmark) {
     if (fCurrentFrame >= FLAGS_frames) {
         this->recordMeasurement();
         this->resetTimingState();
-        this->nextState(kPreWarmTimingPerCanvasPreDraw_State);
         return kTimingFinished_ParentEvents;
     } else {
         fCurrentFrame++;
@@ -120,3 +112,17 @@
     }
 }
 
+void TimingStateMachine::nextBenchmark(SkCanvas* canvas, Benchmark* benchmark) {
+    benchmark->postDraw(canvas);
+    benchmark->perCanvasPostDraw(canvas);
+    fLoops = 1;
+    this->nextState(kPreWarmLoopsPerCanvasPreDraw_State);
+}
+
+void TimingStateMachine::nextSampleWithPrewarm() {
+    this->nextState(kPreWarmTimingPerCanvasPreDraw_State);
+}
+
+void TimingStateMachine::nextSample() {
+    fTimer.start();
+}