Added IdentityServerOptions.GetPublicHostName

IdentityServerOptions.GetPublicHostName allows the host name to be configured at Request time, rather than at construction time.

This provides a wider range of configuration options and is especially useful when multiple deployment environments are involved (e.g. local, unit test, test vs production, etc.)