Parse git objects from v2 pack files in LocalRepo

- Parse and decompress git objects from loose and packed files manually,
  instead of using the GitTerminal to access decompressed git objects
  via command line
  - Only support version 2 packfiles for now (add support for version 1
    and 3 soon)
  - Use the GitTerminal as a crutch in the rare case that we cannot
    properly decompress the git object, as there appears to be an issue
    with some zlib headers in the pack file
  - The profiler shows this method to be just over ten times faster than
    using the GitTerminal exclusively
- Add the following comparison operators to Sha1: <, >, <=, >=