defeat: improve error handling
(squash merge failed)
Introduces a new exception system for the SDAPI.
- Backwards compatible
- Adds detail to exception classes
- Allows future detail additions to existing exception classes
README.md in the sdapi repository has a section on use and migration.
34 new exception classes replaces 14 old ones.
The 14 old exception classes are each matched to a specific new exception class, which in turn may have subclasses for finer problem detection.