Globally accessible hooks into the session / auth lifecycle.

This supports IPlugin authors, allowing session lifecycle hooks to be
registered without needing changes to the IAuthSession
WebSudo feature, allowing requests to be tagged with [WebSudoRequired]

This feature forces a fresh login to be performed by the user for any
action marked with [WebSudoRequired]. Only subsequent logins will grant
the elevated access for the configured duration (default 20 minutes).

Example Configuration:
var authFeature = new AuthFeature(
    () => new WebSudoAuthUserSession(),
    new IAuthProvider[] { new CredentialsAuthProvider(new AppSettings()),})
    {
        RegisterPlugins = { new WebSudoFeature() }
    };
this.AddPlugin(authFeature);
Align field ordering to flow from base class
Merge pull request #936 from tvjames-Forks/auth-session-extension-points

Auth session extension points and a WebSudo feature
Refactor new AuthEvents
WebSudo feature tests
Code-gen signed projs
Merge pull request #937 from tvjames-Forks/auth-session-extension-points

WebSudo feature tests for #936
Populate UserId in CredentialAuthProvider AuthenticateResponse
Merge branch 'master' of github.com:ServiceStack/ServiceStack
Don't override MVC's ViewDataDictionary
Update SS dlls
Add latest RedisServerEvents
Remove BuildTask project
Remove BuildTask test projects
Fix tests when missing AuthEvents
Update SS dlls
Fix subscription removal in RedisServerEvents
Enable RedisServerEventsTests in CI tests
Change to use local dates to match default JSON Serializer behavior to serialize as UTC and deserialize back into Local time