Added git_stash_apply() and git_stash_pop() APIs

This is a tentative implementation of git_stash_apply() based on the actual Git implementation found at https://github.com/git/git/blob/master/git-stash.sh#L440.

Once you have git_stash_apply(), it's trivial to implement git_stash_pop() so I also added it.
That depends on what's the index?  If the workdir contains `B` identical to the index, and what you're checking out does not contain a `B`, then yes, it will be removed.  If the workdir contains `B` that is *not* identical to the index, and what you're checking out does not contain a `B`, then it wouldn't remove that precious file.