Add MonadError and Catchable for Scala Futures.

This adds MonadError and Catchable instances for Scala futures, similar
to Task. The major difference, of course, is that Futures are eager.
Merge pull request #814 from tixxit/topic/scala-future-error-handling

Add MonadError and Catchable for Scala Futures.