Catch exceptions during rake tasks so guard doesn't disable guard-rake.

If a rake task failed or raised an exception then Guard would
automatically disable guard-rake meaning that changes for rake tasks
would no longer be fired.  Rather than raise the exception we
`throw :task_has_failed` to match the guard api and log the error.

Based on [joergschiller's fork](https://github.com/joergschiller/guard-rake) of guard-rake.