TLT-423 - Feature/sdk custom exception

Create a custom exception hierarchy for exceptions that occur in the SDK.  Instead of catching HTTPErrors and re-raising them, CanvasAPIErrors will be raised instead.  A CanvasAPIError maps to HTTPErrors that might occur on the Canvas side. These errors will contain the status code, message json from Canvas, and error message (string representation of the json).  Added some new tests.  Minor version bump.  Minor cleanup of retry logic.  Introduce sublime-project settings into version control.

So the calling method (at least for now, unless we develop a menagerie of CanvasAPIErrors) will have to be brave enough to parse the error_json itself, yes?