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 

Without the enum, we'd have to have explicit checks/results for each of the enum values, NotAllowed(), RequiresTwoFactor().  Subclassers can and should just ignore the enum for their custom conditions, either by adding their own App enum, or specific methods for their own sign in results.  I don't think they need to interact with our built in enum/logic, they just want to hang their own custom codes in the same result as ours (I think)