Add a class for interacting with git config

This commit adds the GitConfigStore class. This allows us to easily get and set keys and values in git config.

The purpose of this class is to enable commands to use  `git config` in a unified manner. The functions to get and set the default imerge name now use this class.

The class is memoized to avoid repeated calls to `git config`.

Tests pass.
I don't understand. `name` doesn't seem to be used, aside from its role in memoization, and I don't see how that has a useful effect. Would you please explain?