Index operations using globs

This adds three new public APIs for manipulating the index:

1. `git_index_add_all` is similar to `git add -A` and adds files in the working directory that match a pathspec to the index while honoring ignores, etc.
2. `git_index_remove_all` removes files from the index that match a pathspec.
3. `git_index_update_all` is similar to `git add -u` and updates entries in the index based on the current contents of the working directory, either added the new information or removing the entry from the index.

There are a variety of arguments to the functions that allow for fairly fine grained control of the behavior. See `include/git2/index.h` documentation for more detail.

This work should address #156 and #157, and I also hope that it will help with a number of libgit2/rugged API changes that are in the works.