Introduce SignInResult/IdentityError/Describer

Follows Resource pattern (IdentityErrorDescriber.StringName, or
FormatStringName(arg1, arg2)
Also cleaned up optional services, by allowing null in constructor
SignInStatus -> SignInFailure and introduced SignInResult to make
SignInManager APIs consistent with IdentityResult (but no strings needed
for SignIn)
Fixes: #86, #176, #287 and #177