Benchmark all mutex implementations.

BUG=skia:

Review URL: https://codereview.chromium.org/1342283004
diff --git a/bench/MutexBench.cpp b/bench/MutexBench.cpp
index 2565d38..ad9a92a 100644
--- a/bench/MutexBench.cpp
+++ b/bench/MutexBench.cpp
@@ -6,20 +6,25 @@
  */
 #include "Benchmark.h"
 #include "SkMutex.h"
+#include "SkSharedMutex.h"
+#include "SkSpinlock.h"
+#include "SkString.h"
 
+template <typename Mutex>
 class MutexBench : public Benchmark {
 public:
+    MutexBench(SkString benchPrefix) : fBenchName(benchPrefix += "UncontendedBenchmark") { }
     bool isSuitableFor(Backend backend) override {
         return backend == kNonRendering_Backend;
     }
 
 protected:
     const char* onGetName() override {
-        return "mutex";
+        return fBenchName.c_str();
     }
 
     void onDraw(const int loops, SkCanvas*) override {
-        SkMutex mu;
+        Mutex mu;
         for (int i = 0; i < loops; i++) {
             mu.acquire();
             mu.release();
@@ -28,8 +33,11 @@
 
 private:
     typedef Benchmark INHERITED;
+    SkString fBenchName;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
 
-DEF_BENCH( return new MutexBench(); )
+DEF_BENCH( return new MutexBench<SkSharedMutex>(SkString("SkSharedMutex")); )
+DEF_BENCH( return new MutexBench<SkMutex>(SkString("SkMutex")); )
+DEF_BENCH( return new MutexBench<SkSpinlock>(SkString("SkSpinlock")); )