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, I figured that in lieu of having a defined strategy for how we'll migrate to Python 3 (hopefully we have that conversation soon) I'd code for Python 2.  I provided a note with links to resources that show this is the way that a Python 3 coded class would "backport" to Python 2, so I figure this is the preferred approach for Python 2.  When we do port to Python 3, we'll be looking for these things.  I think the way the tests are written, if we were to remove the `__unicode__` method and rewrite the `__str__` any test that calls on `__str__` would not have to change.  It's probably fine to have it done both ways since we'll want to revisit it later.