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

Supersedes #808
There is also a libgit2 function to do this (it is not much logic either way) - [git_signature_default](https://github.com/libgit2/libgit2/blob/master/include/git2/signature.h#L63). This will return a `GIT_ENOTFOUND` if the config entries are not found - propagating this specific error code might be useful for consumers of this API to be notified more specifically what went wrong.