Resolve race on approx_time_ in FastClock.

InitType should hold a lock before storing to approx_time_, which is later
read by the background worker.  When the worker is actively running (i.e., not
blocked on bg_cond_) it holds bg_mutex_.

InitType is called during benchmark setup only, so any contention induced for
the mutex should not have performance/accuracy consequences.
diff --git a/src/benchmark.cc b/src/benchmark.cc
index 3cfbe59..f8806d5 100644
--- a/src/benchmark.cc
+++ b/src/benchmark.cc
@@ -577,6 +577,7 @@
   // function starts running - see UseRealTime).
   void InitType(Type type) {
     type_ = type;
+    mutex_lock l(&bg_mutex_);
     std::atomic_store(&approx_time_, NowMicros());
   }