Hotfix/exception handling metric improvements

@ColinDKelley  - Hey Colin 

This is my passion project to add exception metrics and to add notes on exceptions.  As a part of this I had to do a bit of a refactor. (Sorry)  Exception handling had some nested classes that were a bit of a tangle and poorly tested.  I moved these into their own files and ultimately changed their names to make them easier to understand. 

Filter became ExceptionDescription - this is the class that describes exceptions.  It includes patterns that match the exception, and details about how it should be handled. 

ExceptionFilters became ExceptionCatalog - This is the class that monitors a file for changes and reloads the catalog when it changes.  It has a find method that can be used to find an exception description. 

Both of the above needed some help with the testing. 

The rest of the work is to pass the notes and metric names from the exception description to the call backs and to the email notification. 

There was also a minor change - the previous code would not call the hook if the exception was suppressed because of duplicates.  I have change this to always call the hook. 

I still need to make the web application changes to use this version of the gem, to log the new metric names, and the cap work to deploy changes to exception filters.   I will demo these when ready.
@primiti  Can you skip the spaces inside `(` `)`?