Implement opts interface for global/system file search paths

The goal of this work is to expose the search logic for "global", "system", and "xdg" files through the `git_libgit2_opts()` interface.

Behind the scenes, I changed the logic for finding files to have a notion of a `git_strarray` that represents a search path and to store a separate search path for each of the three tiers of config file. For each tier, I implemented a function to initialize it to default values (generally based on environment variables), and then general interfaces to get it, set it, reset it, and prepend new directories to it.

Next, I exposed these interfaces through the `git_libgit2_opts()` interface, reusing the `GIT_CONFIG_LEVEL_SYSTEM`, etc., constants for the user to control which search path they were modifying.

**There are probably better designs for the `git_libgit2_opts()` interface / argument design, so I'm putting this out in the current state for discussion.**

This PR is designed to be an alternative to PR #1291 with paths that are shared for config, attributes, and ignores.