Git configuration API improvements
by Tanay Abhra for Git
Currently git_config() uses a callback mechanism and file rereads for config values. Due to this approach, it is not uncommon for the configuration to be parsed several times during the run of a git program. Instead of using the above method, we will construct a in-memory cache of the config file the first time a config value is queried for. The callbacks will be rewired to use the new API functions provided for efficient lookups from the internal cache. After this, new features can be added.