Checkout selected files

libgit2 currently lacks support for emulating ```git checkout -- file.txt``` behaviour i.e. reverting a file in the working tree.

This pull requests add support for the above mentioned feature. An arbitrary hard limit of 32 files has been included which can be done via some other mechanism. I did not want to introduce calls to malloc() and free(), and was not sure if introducing a ```#define``` for the maximum is acceptable.