Add Basic OpenID Connect support including UserInfo endpoint

I guess I thought "claims" would pretty much always be a dictionary that looks like this:

```
{
   "claim_a": {"value": "foo"},
   "claim_b": null
}
```

But it seems like, when passed into this function it's actually something that looks like this:

```
{
    "id_token": {
        "nonce": {"value": "foobar"}
    }
}
```

Which was confusing.