Un-remove ExtraData

It was removed in 3eced323e6a648c9f968f497c4711719984477ef due to the
fact that the interface of Token.Extra of golang/oauth2 was changed.
This commit un-removes ExtraData with different interface than the
previous one due to the limitation of golang/oauth2.

Example of an application that depends of ExtraData;

 * https://github.com/typester/gate/blob/master/authenticator.go#L68-L69