Fixed double-free bug in the code for `onException`

The mistake was that `onException` was using
`Control.Monad.Catch.onException` to free the finalizer without releasing
the associated key.  This triggered a double-free when reaching the
top-level handler which still had the same finalizer registered.  The
solution is to just get rid of the call to
`Control.Monad.Catch.onException` since the top-level handler will take
care of finalizing things correctly.