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.
I'm sorry, I don't think I'm explaining my question right. Let me try to this way:

It makes sense that we use a LocalStack for the request context, because you may want to fake a request to another part of server and access the data there, as in the case of an internal redirect. (I don't know of any other examples.) But for the application context, I cannot think of a case when we would want to fake the context of another application-- except perhaps when faking a request to a separate application in a multi-application app. Are there other examples of when we might need to fake an application context in code that made a ``LocalStack`` (rather than simply a ``Local``) the right choice?