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
It won't throw unless OptionsServices are not used, IOptionsAccessor will always return a default ExternalAuthenticationOptions with SignInAs set to null if asked for.