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