Refactor Token Provider to be aware of expired tokens.

The Token Provider was not aware of expired tokens, and would
not raise Unauthorized if a token was expired when asked
to "validate" (validate_token, validate_v2_token, validate_v3_token)
or "check" (check_v2_token, check_v3_token) it. The assumption was
that the Token driver would never return an expired token  from
the token_api.get_token method.  When token caching is implemented,
this assumption can no longer be made.

This patchset updates the provider to make it capable of inspecting
token data returned by the token validation methods on the driver.
If a token is expired it will properly raise Unauthorized.

Refactored the Token Provider to noi longer use a separate code-path
to "validate" or "check" tokens.  Check now benefits from the code
to ensure a token is still valid.

Since caching is implemented at the manager level, the expiration
check is done in the manager (above the driver), it is expected
that the manager needs to be expiration aware (responses from the
driver may be cached).

partial-blueprint: caching-layer-for-driver-calls
Change-Id: I2caa4cb47ba1d3a33746fc00f672a5b8fe319bd6
Merge "Refactor Token Provider to be aware of expired tokens."