Add bracket and friends to the MonadCatch typeclass

The point of this change is that sometimes better semantics can be had for slightly different defintions of `bracket`,  as evidenced by the existence of [`bracketSnap`](http://hackage.haskell.org/package/snap-core-0.9.6.0/docs/Snap-Core.html#v:bracketSnap) which runs the finalizing function even when a request is terminated early.

Of course,  often this is not relevant,  and so the old definitions have been made the default definitions.