Fix umask fragility

It seems that libgit2 is correctly applying the umask when initializing a repository from a template and when creating new directories during checkout, but the test suite is not accounting for possible variations due to the umask. This updates that so that the test suite will work regardless of the umask.

This also updates to the latest version of clar which adds a variant of `cl_assert_equal_i` that takes a format string so when I do `mode_t` comparisons, it will be easier to read the results and understand what's failing. That version of clar also fixes a number of warning messages that I was seeing on Windows.

This required a couple extra commits to fix everything up on Windows, but I think we're good now.