Made commit details parsing more robust for ReceivePackHook

The initial implementation assumed that space was a valid token to use
for parsing the author/committer signature.  In practice this doesn't
work as the name field can contain spaces.

Further, the timestamp field sometimes contains an offset that allows
the local time to be calculated, making it harder to just find the
timestamp value in the array of tokens.

This change parses the tokens sequentially, first looking for the type
token and then passing the rest of the string as data for further
processing.

Signature parsing now uses the email address as the anchor for the
parser, looking for '<' and '>' first and basing the rest of the parsing
on that.  This should be a bit more robust to variations within the name
and timestamp fields.

Tested using the failing string by stepping through the debugging and
validating that all tokens were parsed as expected.