Add skipping of unknown commit headers

This replaces the later part of commit header parsing with a loop that checks for optional trailing headers (such as "encoding") and knows to skip unrecognized header items (including continuation lines) until a terminating completely blank line is found. Only then does it move to reading the commit message. This should make header parsing forgiving about the order and presence of these optional trailing header items.

This should fix #1253 given my understanding of the format of the GPG signature data.