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.
I'm not following you: `unstashed_tree` is the reinstantiated index if requested, it's not the workdir tree.

The implementation I propose is dirt simple, very robust and predictable. You suggest to use `git_merge_trees` / `git_checkout_index`, but the potential side effects / edge cases of this approach (and again how do you get the workdir tree here?) are unknown to me, *independently* of the git apply unit test passing or not.