Initial implementation of diff rename detection

This implements the basis for diff rename and copy detection,
although it is based on simple SHA comparison right now instead
of using a matching algortihm.  Just as `git_diff_merge` can be
used as a post-pass on diffs to emulate certain command line
behaviors, there is a new API `git_diff_detect` which will
update a diff list in-place, adjusting some deltas to RENAMED
or COPIED state (and also, eventually, splitting MODIFIED deltas
where the change is too large into DELETED/ADDED pairs).

This also adds a new test repo that will hold rename/copy/split
scenarios.  Right now, it just has exact-match rename and copy,
but the tests are written to use tree diffs, so we should be able
to add new test scenarios easily without breaking tests.
Move rename detection into new file

This improves the naming for the rename related functionality
moving it to be called `git_diff_find_similar()` and renaming
all the associated constants, etc. to make more sense.

I also moved the new code (plus the existing `git_diff_merge`)
into a new file `diff_tform.c` where I can put new functions
related to manipulating git diff lists.

This also updates the implementation significantly from the
last revision fixing some ordering issues (where break-rewrite
needs to be handled prior to copy and rename detection) and
improving config option handling.
Add git_config_refresh() API to reload config

This adds a new API that allows users to reload the config if the
file has changed on disk.  A new config callback function to
refresh the config was added.

The modified time and file size are used to test if the file needs
to be reloaded (and are now stored in the disk backend object).

In writing tests, just using mtime was a problem / race, so I
wanted to check file size as well.  To support that, I extended
`git_futils_readbuffer_updated` to optionally check file size in
addition to mtime, and I added a new function `git_filebuf_stats`
to fetch the mtime and size for an open filebuf (so that the
config could be easily refreshed after a write).

Lastly, I moved some similar file checking code for attributes
into filebuf.  It is still only being used for attrs, but it
seems potentially reusable, so I thought I'd move it over.
Ensure that non-error is not propagated
Checkout: remove duplicate 100% progress report
Better naming for file timestamp/size checker
I LIKE THESE NAMES
Merge branch 'config-refresh' into development
packbuilder: add git_packbuilder_foreach

Let the user get each object as a buffer+size pair so they can handle
the packfile content as they need to.
packbuilder: add accessors for the number of total and written objects
Reorganize transport architecture (squashed 3)
Improve consistency of WinHTTP request headers
Fix a bug in cl_setenv on Windows XP
Http: Set an error for invalid content-type
Merge pull request #1030 from pwkelley/transports

Reorganize transport architecture
Update of text stats calculation

Do not interpret 0x85 as Next Line (NEL)
char when gathering statistics for a text file.
Merge pull request #1036 from jamill/text_stat

Update of text stats calculation
Hide deprecations on MacOS

Why Apple, why?
index: Switch to git_futils_filestamp
index: Add git_index_write_tree