(bug 44819) introducing array of $wgOpenIDProviders and $wgOpenIDForcedProvider

1. Allows a wiki to act as OpenID consumer (RP; relying party)
   with a fixed ("forced") OpenID Provider.
==============================================================

Allows to set up the wiki so that a single OpenID provider is hard-coded.

2. Introduce a parameter list of providers (array).
===================================================

Makes the extension easy to maintain. Avoids hard-coded provider parameters
in Javascript and CSS resources.

The providers array Url items can contain a {username} placeholder. An alternative
Url can (optionally) be defined, the Url for which the provider always shows its
generic Id selection page. The exact mechanism and layout is not standardized
and differs from one OpenID provider to another.

If a label string is defined, it is shown as a fixed, non-localized text
above the input field when selecting that specific provider.

Otherwise, the name of the provider (array key) is used to construct a message
text which can be localized. If no message text is present in the i18n file,
then a standard localised message "Enter your (Providername) username" is shown
with the input field.

$wgOpenIDProviders = array(

  'MyTrustedProvider' => array(
      'openid-url'  => 'https://my-trusted-provider.com/openid/{username}/',
      'openid-selection-url' => https://my-trusted-provider.com/openid/'
      'large-provider' => false,
      'label' => "My trusted provider"
  ),

  'Google' => array(
      'url'  => 'https://www.google.com/accounts/o8/id',
      'large-provider' => true,
  ),

  ...

)

If the new configuration parameter $wgOpenIDForcedProvider is specified and when it
is the name (the array key) of one of the OpenID providers supported by the
extension (example: "Google") then the extensions' internal login and provider
selection forms are skipped entirely.

Example 1:
$wgOpenIDForcedProvider = "Google"; # Google is defined in $wgOpenIDProviders

The value can also be the fully qualified Url of a trusted provider you want to
bind all logins to and which is not in the $wgOpenIDProviders array:

Example 2:
$wgOpenIDForcedProvider = "http://www.mediawiki.org/OpenIDServer/id";

If the new configuration parameter $wgOpenIDDefaultProviderName (string or
null (default)) is a provider name in $wgOpenIDProviders then that
provider is pre-selected by default for new users when they visited the
provider selection screen.

Instead of rendering the 'openid' provider differently, it is treated like
the others and always a hidden input 'openid_url' is added that the JS fills.

Based on original work of Nathan Bird <ecthellion@gmail.com> but heavily
modified since then.

Bug 44819
Bug 47151

Change-Id: I099026f549da04471a8405b2a18a8f158f82272c