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.
Actually that's quite confusing naming IMO, because I'd always assumed we're already talking about data specific to the appctx/requestctx when talking about context locals. "Thread locals" is easier to understand, whether the value is actually per-thread or per-process isn't really too interesting for the app developer.