Add support for configuration discovery, clean the different messages and remove TokenEndpointRequest* classes

https://github.com/AspNet-OpenIdConnect-Server/Owin.Security.OpenIdConnect.Server/issues/9

Lots of changes in this PR:
* New private methods named `InvokeConfigurationEndpointAsync` and `InvokeCryptoEndpointAsync` have been added to `OpenIdConnectServerHandler` to handle the new __discovery stuff__. New hooks have also been added in `IOpenIdConnectServerProvider` to make it fully extensible (`ConfigurationEndpoint`, `ConfigurationEndpointResponse`, `CryptoEndpoint` and `CryptoEndpointResponse`). Same thing for `OpenIdConnectServerOptions`, which now exposes `ConfigurationEndpointPath` and `CryptoEndpointPath`.

* `AuthorizeEndpointRequest` has been renamed to `OpenIdConnectAuthorizationRequest` and `TokenEndpointRequest` to `OpenIdConnectTokenRequest`. Same thing for the companion extensions in `OpenIdConnectServerExtensions` and for various properties named `AuthorizeEndpointRequest` and `TokenEndpointRequest`.

* The `*ExpireTimeSpan` in `OpenIdConnectServerOptions` have been renamed to `*Lifetime`.

* The multiple `TokenEndpointRequest*` classes that were used to handle the different grant types (e.g authorization code or resource owner password) have all been removed and merged into `OpenIdConnectTokenRequest`.

* The `Is*GrantType` properties in `OpenIdConnectAuthorizationRequest` have been renamed to use the `Flow` suffix. Same thing for the `ContainsGrantType` helper.

* The `AdditionnalResponseParameters` properties have been simplified to `AdditionnalParameters` everywhere they appeared. `AdditionnalParameters` has been removed from `OpenIdConnectTokenEndpointContext`. You can still access this property from the `TokenEndpointResponse` hook though.

* The `AuthorizeEndpointPath` property in `OpenIdConnectServerOptions` has been renamed to `AuthorizationEndpointPath`. `AuthorizationEndpointPath` is also now mandatory (a check has been inserted in `OpenIdConnectServerMiddleware`).

* `AuthorizationEndpointPath`, `ConfigurationEndpointPath`, `CryptoEndpointPath` and `TokenEndpointPath` now all have default values registered in `OpenIdConnectDefaults` (respectively __/connect/authorize__, __/.well-known/openid-configuration__, __/.well-known/jwks__ and __/connect/token__). This also means they are enabled by default. End developers are free to set them to `PathString.Empty` to disable them explicitly.

* The `IssuerName` property in `OpenIdConnectServerOptions` has been removed to favor the `Issuer` property, which represents the issuer base address and is used on the new configuration endpoint. Multiple checks are made in `OpenIdConnectServerMiddleware` to ensure a correct value is provided.

* The samples have been reworked to use an asymmetric RSA security key (via an X.509 certificate). I generated a new certificate using `makecert` and embedded it in the assembly to make it easier to store. The different clients all have been updated to use the new configuration discovery support.