Various warning cleanup and minor fixes

This cleans up a number of small warnings and some little bugs that have crept in. Specifically:

* Re-fixes `git_indexcap_t` to explicitly mark constants as unsigned. Previously merged "fix" actually added new warning messages for me
* Fixed warning in `git_filter_list_apply_to_blob` that also needed some actual error checking
* Fixed apparent misplaced semicolon with template code in `repo_init_structure` and avoided NULL ptr usage when error occurs
* Streamlined some calls to `git_buf_printf` with format `%.*s` to just use `git_buf_put` instead
* Found seemingly missing `va_end` inside `git_buf_vprintf`
* Adds `-Wno-missing-field-initializers` for Makefile.embed so embedded build will be quieter
* Fixed test case where `git_off_t` values were being compared as `size_t` instead
* Updated `cl_git_write2file` helper to take a buffer length which let me simplify some tests with binary data
* Fixed binary detection case in CRLF to-odb filter where binary data could be treated as an error, instead of just not filtered. This change also got a new test added.
* Updated a couple of the core filebuf tests to actually check the data that they wrote

None of these seem big enough to merit their own PR, but I thought someone should probably glance over the batch of fixes before merging. (Also, hate to push directly while the build is broken b/c of the redirect issues.)