Make Configuration.BuildSignature() throw when user identity isn't configured

Supersedes #808
My thought was that there is already a libgit2 convenience method for this functionality so why not use that (unless there is value in being able to specify the `now` argument). However, the logic is not very difficult and not much code would be saved... The one thing that might be nice is that all bindings could have consistent logic around getting the default signature, including error code returned when the name or email is not found in the configuration. I don't really feel too strongly either way.

You might not know specifically which entry is not found, but the GIT_ENOTFOUND error code (and corresponding exception type), would indicate that either the name or email was not found...