Use DI activated options

- Switch to IOptionsAccessor over instance based options
- Introduce ExternalAuthenticationOptions for default SignInAsType
- Update all middlewares to use new pattern
- OptionsModel requires new() Options, so had to rework the AuthenticationOption heirarchy, I was able to preserve similar api via workarounds in the extension methods
The description needs to contain the auth type. If you're not going to set it in the base constructor then you should set it in the subclasses.