restructure exceptions to use a common interface instead of a common abstract class to better leverage specific SPL exceptions
Merge pull request #371 from lsmith77/exceptions

restructure exceptions to use a common interface