Context API changes

This PR is currently for discussing API changes to `Context`. The changes will be added later. I've included a document which lays out how I think the API should look. It also includes other objects in distarray because this change would affect those as well. Since I mostly removed jobs from `Context` and put them other places.

The most obvious change is that there is a module level `Context` object at `distarray.world`. This is used as the "default context" unless another one is specified. Also, contexts can now be indexed to return another context limited to fewer engines. Similar to how `IPython.parallel.Client` can be indexed to return limited views. Except here indexing a context returns another context.

The document can be viewed [here](https://github.com/cowlicks/distarray/blob/move-context/docs/source/api-model.rst).