test: Remove broken mutex optimizations in helper

These optimizations don’t actually improve much, and complicate
things.

They also trigger a serious issue, due to the way gocheck is
implemented. If an Assert fails, it calls runtime.Goexit, which will
terminate the currently running goroutine. While terminating the
goroutine, Goexit unwinds the stack and runs any deferred functions.
In the bad case, Assert will fail while a mutex is unlocked, and
there will be another deferred Unlock, which will trigger a panic.

This panic will not have a complete stack trace due to
golang/go#9404.

The solution is to treat t.Assert as code that looks like:

    if err != nil {
      return
    }

and remember that all deferred functions will be run.

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
Merge pull request #628 from flynn/fix-test-helper

test: Remove broken mutex optimizations in helper