Rewrite docs for context locals, request contexts, and app contexts

Closes #1151.

The following is an incomplete draft. However, I wanted to request comments immediately, in case anything was severely wrong.

The doc should be updated to include:

- [ ] How context-local objects in Flask are implemented

Will squash commits later.
You then can do this:

    with one_app.app_context():
        with another_app.app_context():
            pass
        do_stuff()

And in ``do_stuff`` you still can properly operate on ``one_app``'s appctx.