Add docstrings for Commit.extra and Commit.parents.
Support 'gpgsig' property in Commit objects.
Test ProtocolGraphWalker.all_wants_satisfied rather than private
_is_satisfied.
Add missing underscore in test name.
Factor out all_wants_satisfied.
client: allow send_pack callers to override how packs are emitted

Sometimes, a client will already have a pack computed for the
(have, want) negotiated with the server. Rather than re-compute the
pack each time, we could instead allow the send_pack caller to handle
writing pack data themselves.

This patch leaves much of the send_pack structure intact by using
write_pack_objects as the default write strategy.