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.

In icommons_ui I'm approaching it in the opposite manner:

```Python
    def __str__(self):
        return '%s(status=%s, display_text=%s)' % (self.__class__.__name__, self.status_code, self.display_text)

    def __unicode__(self):
        return self.__str__().decode('utf-8')
```
This way, __str__ does not need to change when porting to Python 3. __unicode__ will simply never be called (or we just remove it). Is this method you chose more flexible?