Created ExceptionMapper to allow sharing exception messages

All static messages now come from the same place and are
shared b/w the CLI/GUI exception handling mechanisims.
Merge remote-tracking branch 'origin/master' into exception-message-mapper

Conflicts:
	src/subscription_manager/managercli.py
ExceptionMapper will now traverse object graph looking for message

- traverse the mapped exception graph looking for a mapped message
- use __class__ instead of type() to perform message lookup
- added test cases around the ExceptionMapper
Merge pull request #820 from candlepin/mstead/exception-message-mapper

Created ExceptionMapper to allow sharing exception messages