Allow for custom IAuthRepository implementations

Give developers the option to set there own implementation of IAuthRepository. This gives developers greater control of tokens so it doesn't take place behind the scenes. For example a developer may want to persist session properties to a database for later use.