Adding a method to help with exception handling

This commit adds  a `Timber.raise_exception` method which allows an exception to be passed in to timber and acknowledged by its subscribers.   

A bit of background:

Previously, timber activity loggers were always given a green light to run **unless** a special "exception" key was passed in. This works well most of the time, but breaks down when we rescue an exception and want to stop activity loggers from firing. The [prime example of this is in our global ApplicationController, where were rescue CanCan::AccessDenied and redirect users](https://github.com/scholastica/scholastica/blob/integration/app/controllers/application_controller.rb#L20-L29).  Since we rescue the CanCan exception, Timber thinks all is well and continues to create activity items when it shouldn't.   

The fix is to provide a small api/hook into Timber to tell it to halt any subscribers and raise an exception, hence `Timber#raise_exception`.  The proposed changes are small, and use the payload[:exception] detailed in [ActiveSupport::Notifications](http://api.rubyonrails.org/classes/ActiveSupport/Notifications.html).