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:

- [x] How context-local objects in Flask are implemented

Will squash commits later.
Actually found a nicer summary in your new docs:

    The problem with this approach is that it can make application logic verbose,
    opaque, and expensive to maintain. Since dependency is transitive, many
    functions will depend on the request context only because they depend on some
    function which depends on the request context

In this case, CLI => Storage => get_password, so Storage would depend on the
CLI runtime info just because get_password does.