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
OAuth considers ExternalAuthenticationOptions an optional dependency but DI will throw if it's not defined, correct?