Add SignatureEnumerator

I want to count how many commits and authors. In case of a super big repository (the Linux kernel source tree), Libgit2sharp use too many memory(about x86 1GB \ x64 1.5GB) to raise a OutOfMemoryException.

```cs
using (var repo = new Repository(@"path\to\Linux\kernel\source"))
{
    var commits = repo.Commits.ToArray();
    Console.WriteLine(commits.Length);
    Console.WriteLine((double)Process.GetCurrentProcess().PagedMemorySize64 / 1024 / 1024);
}
```

So that I want create the `SignatureEnumerator` that will save half memory. the usage of memory is about x86 500MB, x64 600MB.

But I don't think current PR was done. I want to hear your opinion.