API: Overhaul token handling
The current token handling is a mess. This simplifies things greatly:
- *All* tokens are obtained from action=query&meta=tokens, rather than being spread over action=tokens, action=query&prop=info, action=query&prop=revisions, action=query&prop=recentchanges, and action=query&prop=users. All these old methods are deprecated.
- Similarly, there is only one hook to register new token types. All old hooks are deprecated.
- All tokens are cacheable.
- Most token types are dropped in favor of a 'csrf' token. They already were returning the same token anyway.
- All token-using modules will document the required token type in a standard manner in action=help and are documented in machine-readable fashion in action=paraminfo.
Note this will require updates to all extensions using tokens.