Build libgit2 as a dependency, for now requiring CMake
Add libgit2 to the default build
Add OPTS and start tracking libgit2's HEAD
Bump libgit2 to 0.21.0
Fix the Makefile for Linux

Linux uses puts the version at the end of the soname, while OS X puts
it in the middle. Also, case issues.
`make install` now correctly installs libgit2
fixes for Windows cross-compile
add quotes around $(CC) for libgit

also move libgit2 license link to the right section,
and remove command-line git from Versions.make
only send base compiler name to cmake
add a stub test to check libgit2 library version
add cmake and libgit2 info to README.md
also add cmake instructions to README.windows.md

remove notes about issues that should be fixed
bump libgit2 to v0.21.2
Type promotion for keys and values for Dict merge

Discussed in #8877.
rename String => AbstractString
fix Dict syntax deprecation warnings

somehow the one for `[a=>b]` stopped working entirely
Fix #8874
Fix #8871

Mapreduce didn't work with `Range{BigInt}`, because the length wasn't a
`Int`, because of potential overflow. This patch just converts the
length to Int with a checked conversion, because a mapreduce on larger
arrays will probably never finish anyway.

Also fix some broken test of prod
Merge pull request #8872 from JuliaLang/sk/abstractstring

rename String => AbstractString
Merge pull request #8820 from JuliaLang/tk/libgit2

Add libgit2 dependency to build system