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 strongly doubt that internal redirects are usually a good solution though. Even thinking about it is often indicating that a layer of abstraction is missing, and that some common functionality should be extracted from the view functions.

But there are definetly valid usecases.

>But for the application context, I cannot think of a case when we would want to fake the context of another application

Keep in mind the app context is also pushed when the request context is pushed. I.e. if faking requests requires a stack for the reqctx, then the appctx must be a stack too.