GPG signature support on commit object.

I rewrite the patch for GPG signature support with unit test.

This replaces pull request #57 and also fixes issue #110.