Create a separate MonadThrow typeclass.

This could arguably be put in a new module Control.Monad.Throw instead,
I have no opinion on the matter. I just went for the smallest changeset
for this.
Add new MonadThrow instances
Merge pull request #24 from snoyberg/master

Introduce MonadThrow