TokenWallet: new methods and refactoring

TokenWallet raises KeyError if user retrieves token for a not allowed
action.

Site.preload_tokens () renamed site.get_tokens().

In addition:
- Raise Error in TokenWallet if User has no rights
- Exception changed to Error.
- Make the message more explicit:
  Action 'patrol' is not allowed for user X on Y wiki.
- Added __contains__ method.
- Added __str__ method.
- Added __repr__ method.
- Added cache for not available tokens, to avoid to request them again.
- Moved cache for available tokens in TokenWallet()
- Preload all tokens available when requested for one token.

Change-Id: Iac9567084dca017a1ac4ff07e4d0c994b51d79e5
Merge "TokenWallet: new methods and refactoring"