Win32: UTF-8 <-> WCHAR conversion overhaul
Handle win32 reparse points properly
Some doc and examples/diff.c changes

I was playing with "git diff-index" and wanted to be able to
emulate that behavior a little more closely with the diff example.

Also, I wanted to play with running `git_diff_tree_to_workdir`
directly even though core Git doesn't exactly have the equivalent,
so I added a command line option for that and tweaked some other
things in the example code.

This changes a minor output thing in that the "raw" print helper
function will no longer add ellipses (...) if the OID is not
actually abbreviated.
Use git_diff_get_stats in example/diff + refactor

This takes the `--stat` and related example options in the example
diff.c program and converts them to use the `git_diff_get_stats`
API which nicely formats stats for you.

I went to add bar-graph scaling to the stats formatter and noticed
that the `git_diff_stats` structure was holding on to all of the
`git_patch` objects.  Unfortunately, each of these objects keeps
the full text of the diff in memory, so this is very expensive.  I
ended up modifying `git_diff_stats` to keep just the data that it
needs to keep and allowed it to release the patches.  Then, I added
width scaling to the output on top of that.

In making the diff example program match 'git diff' output, I ended
up removing an newline from the sumamry output which I then had to
compensate for in the email formatting to match the expectations.

Lastly, I went through and refactored the tests to use a couple of
helper functions and reduce the overall amount of code there.
Replace math fns with simpler integer math
patch: emit binary patches (optionally)
Merge pull request #2289 from libgit2/rb/note-git-diff-index-behavior

Some doc and examples/diff.c changes
React to feedback for UTF-8 <-> WCHAR and reparse work
Merge pull request #2283 from phkelley/win32_fs

Win32: UTF-8 <-> WCHAR conversion overhaul
Merge pull request #2291 from ethomson/patch_binary

patch: emit deflated binary patches (optionally)
fetchhead: deal with quotes in branch names

The current FETCH_HEAD parsing code assumes that a quote must end the
branch name. Git however allows for quotes as part of a branch name,
which causes us to consider the FETCH_HEAD file as invalid.

Instead of searching for a single quote char, search for a quote char
followed by SP, which is not a valid part of a ref name.
Merge pull request #2295 from libgit2/cmn/fetchhead-quote

fetchhead: deal with quotes in branch names