Support GHC 7.8

This replaces the homegrown `MonadException` module with the [`exceptions`](http://hackage.haskell.org/package/exceptions) package.  The homegrown module used functions deprecated in GHC 7.6 and removed in GHC 7.8, `block` and `unblock`.

Instead of a `MonadExcIO m` constraint, we now use a `(MonadIO m, MonadMask m)` constraint.  Instead of `bracketM` and `bracketM_`, we now use `bracket` and `bracket_`.

This also removes a bit of commented-out dead code which was confusing the `clang` C preprocessor on OS X, fixing #18.