Common use cases could be simplified by providing optional parameters for each property:
```
c => CommitHeader.From(c, author: new Signature("Ben Straub", "me@example.com", c.Author.When))
```
instead of
```
c => {
    var h = CommitHeader.From(c);
    h.Author = new Signature("Ben Straub", "me@example.com", h.Author.When);
    return h;
}
```