New context() API

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:

```
context() -- a public, yet likely unused API
>>> Client.context({'project': '1'})

user_context() -- a shortcut to set the user interface
>>> Client.user_context({'email': 'foo@example.com'})

tags_context() -- add additional tags to context (or overwrite an existing tag)
>>> Client.tags_context({'key': 'value'})

extra_context() -- add additional data to context (or overwrite an existing key in the data)
>>> Client.extra_context({'key': 'value'})
```