Fix errors with zstream (and a variety of other cleanups)

This started out as a branch where I was cleaning up compiler warnings on our various platforms. In doing so, I realized that the `git_zstream` logic was incorrect when the buffer to be compressed could not be fully compressed in a single call to `deflate`. So, I fixed it.  This PR now contains:

- [x] Redesign the (internal) zstream API to make it easier to do chunked deflation
- [x] Write tests for the zstream API
- [x] Rewrite code using the zstream API
- [x] Fix various Linux and Windows compiler warnings
- [x] Fix submodule fetchRecurse logic (prompted by compiler warnings, but grew a bit)
- [x] Fix some missed `oid` -> `id` conversion (prompted by looking at code due to compiler warnings)

This should probably be broken into 3 PRs - one to fix zstream, one to fix submodule fetchRecurse, and one with all the other fixed. I'm feeling a bit lazy, so let me know if you think that's necessary.