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

Closes #1151.

The following is an incomplete draft. However, I wanted to get comments immediately, in any case anything was severely wrong.

The doc should be updated to include:

- [ ] How context-local objects in Flask are implemented
You are correct. Context locals bind to greenlets/stacklets or whatever you want to call them, if possible (which is whenever a library implementing them and checked by werkzeug is importable), if it's not possible they bind to threads.

That is why they are called context locals and not just thread locals.