activate the AssertHeld() logic of Mutex and Spin classes. And address issue #100

Scary to find that Mutex.AssertHeld() test, used throughout the leveldb code, performs no test.  This adds the necessary assert logic.  PR is for post-Riak 2.0 code freeze.

I used this code on a really long Bulk test sequence.  It did not find any mutex problems … thankfully.

This branch also contains an adjustment to VersionSet::LogAndApply().  Scott Fritchie created a test to randomly fail fail accesses.  That test found a flaw in the LogAndApply() logic flow that was adjusted for 2.0.  The logic flow now correctly differentiates between file failures and write failures … i.e. does not segfault.