cc: Add MicroBenchmarkController.

This patch adds a MicroBenchmark base class along with
the MicroBenchmarkController. The idea of these classes is to be
able to run benchmarks on real trees. That is, we would be able to
inject benchmarking code into regular operations on the tree.

The plumbing is going into a separate patch, just so each piece
can be inspected separately. The general idea is the following.

- The controller would live on the LayerTreeHost.
- Gpu benchmarking extension would get access to it and schedule
  whatever benchmark is specified from javascript. For this reason,
  we decided to keep std::string as a parameter to ScheduleRun,
  instead of an enum
- The benchmark would then use DidUpdateLayers callback to run
  the benchmark.

Note that there are a couple of empty implementation virtual functions,
but together with the plumbing patch, it should hopefully make sense.

R=enne@chromium.org,nduca@chromium.org

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@228177 0039d316-1c4b-4281-b951-d872f2087c98
Add CHECK()s to track down crash.

The stack trace and minidump seem to suggest that controller_ is NULL in
OnProfileChanged() but it's not clear how that's happening. These CHECK()s will
tell us if controller_ started off as NULL.

BUG=305799

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@228178 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 228178