RFC: status access by index, providing more details to callers

So this is in response to some of the discussion from https://github.com/libgit2/libgit2/pull/1542 wherein we decided that perhaps an iterator pattern was a wee bit restrictive.  (Providing access to old name / new name, old mode / new mode, etc, etc in a `_next` call are getting sort of crazy!)

This is a complete 180 and allows callers full introspection of the `git_diff_delta` backing their status call.  This does the status computation up-front and creates an array of status entries.

- [ ] Add some test cases for case-changing renames
- [x] Make `git_diff__paired_foreach` case sensitive
- [x] Figure out what to do about `GIT_DIFF_IGNORE_SUBMODULES` (which may be as simple as "deal with this later")