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 also think this should be the new pattern for all of the classes that are consuming options, today everyone has their own mechanism for injecting options in unit tests and its painful, since we have the constraint already that options are new() able, when using DI, the options will never be null, so its safe for our code to always supply a default for non DI scenarios.