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.
If you stash untracked / ignored files, the created tree only contains them and nothing more. That's why you can't just check it out.

What `git apply` does is checkout that tree using a special mode which preserves workdir files that are not in the tree and in effect only add the missing files. We don't have this in libgit2, right?

I guess I could merge the untracked tree with the current workdir tree but I'm not sure I have this tree around in memory.