Support for scoped userinfo requests

Allow the use of profile, email, address and phone in addition to plain
openid scope to request particular sets of claims for the user.

See http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims

- Filtering of UserInfo instance based on a [Scope] list
- Use of data-default-generics to reduce boilerplate
More detailed exceeded scope error message