Apply resource pattern to error describer service

- 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: https://github.com/aspnet/Identity/issues/86, https://github.com/aspnet/Identity/issues/176, https://github.com/aspnet/Identity/issues/287 and https://github.com/aspnet/Identity/issues/177

cc @divega @suhasj 

Failed == Default/Unknown/Generic failure, I liked Failed more than Default/Unknown, but you get the idea, its the default 0 enum value.

The others failures have specific meaning which the app typically switches on.