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 

I think unit testing are a valid use case, before this change, it was a nightmare setting things up for unit tests.  Also, this also lets identity be used without DI much easier, I don't think we gain anything by requiring 9 clunky constructors arguments when the defaults are perfectly fine.  We also now have the option of removing some of the services we add by default that are extremely unlikely to be replaced (UserNameNormalizer, PasswordHasher, etc)