Add support for the OpenID Connect prompt parameter

Relevant links: 
http://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint
http://openid.net/specs/openid-connect-core-1_0.html#AuthError

As you can see, prompt = "consent" matches the previous OAuth2 logic, but the error message has changed (from access_denied to consent_required). We should support that at least.
It should also be possible to support prompt = 'none', which this patch tries to do.

I don't really understand how prompt = 'login' should work (when do we redirect with an error message? Right after the first login fail? That sounds dumb)
Maybe that's why Google doesn't support it either: https://developers.google.com/accounts/docs/OAuth2Login#prompt

Notes: 
- ~~This change causes validateAuthorizeRequest() to be called twice (once by the OpenID method, once by the parent method), which is dumb and wasteful. Need to find a way around that.~~
- ~~Not sure if is_null($user_id) is a good way to check that the user is not logged in. Feels a bit hackish,  so we might want an explicit flag. Why is $user_id even nullable in the first place?~~
- Needs tests.
As this code to determine the `$redirect_uri` is duplicated 3 times, let's pass in a `$redirect_uri` parameter to the `setNotAuthorizedResponse` function.  If we do that, I am good with a merge