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.

Yes, due to the different formats of json that gets returned for different error types there's no easy/safe way to parse it out ahed of time.  I actually debated whether or not to even include this, but I figured since you're getting the text representation of the json as the message, it wouldn't hurt to include the actual json in case you really want to parse through it.