SystemExit does not subclass Exception, so we don't catch this.
SystemExit manifests itself (at least) from gunicorn when gunicorn
attempts to gracefully shut down a worker process. See GH-675 for more
background.
Fixes: GH-675
This makes the API much easier to use, and resembles the raven-ruby implementation. Users can continually merge context (generally within their middleware), and simply need to call context.clear() to refresh it.
The following APIs are added as part of this changeset:
```
Client.context -- the accessible context instance
>>> Client.context.get()
Client.context.clear() -- flush the current context
>>> Client.context.clear()
Client.user_context() -- a shortcut to set the user interface
>>> Client.user_context({'email': 'foo@example.com'})
Client.tags_context() -- add additional tags to context (or overwrite an existing tag)
>>> Client.tags_context({'key': 'value'})
Client.extra_context() -- add additional data to context (or overwrite an existing key in the data)
>>> Client.extra_context({'key': 'value'})
```