Introduce git_reference_shorthand

Generate a shorthand name out of the full refname.
This refs iterator pleases the gods.
Liike this
What are the chances, really
...Aaaand this works
Refcounting
Merge pull request #1622 from yorah/fix/thread-segfault

thread: fix segfault on Windows 64 bits
Build with the system's http-parser installation if available
Frees
Merge pull request #1530 from veeti/http-parser

Build with the system's http-parser installation if available
Merge pull request #1623 from yorah/fix/tag_auto

remote: make default tag retrieving behaviour consistent
Merge pull request #1559 from carlosmn/ref-shorthand

Introduce git_reference_shorthand
Added support for setting transport flags (No check SSL cert) to git_clone call.
Merge pull request #1621 from NHDaly/clone_transport_flags

Added support for setting transport flags (No check SSL cert) to git_clo...
improve test for index extension truncation
Merge pull request #1626 from ethomson/index_ext_truncation

improve test for index extension truncation
Make iterators use GIT_ITEROVER & smart advance

1. internal iterators now return GIT_ITEROVER when you go past the
   last item in the iteration.
2. git_iterator_advance will "advance" to the first item in the
   iteration if it is called immediately after creating the
   iterator, which allows a simpler idiom for basic iteration.
3. if git_iterator_advance encounters an error reading data (e.g.
   a missing tree or an unreadable file), it returns the error
   but also attempts to advance past the invalid data to prevent
   an infinite loop.

Updated all tests and internal usage of iterators to account for
these new behaviors.
Zero memory for major objects before freeing

By zeroing out the memory when we free larger objects (i.e. those
that serve as collections of other data, such as repos, odb, refdb),
I'm hoping that it will be easier for libgit2 bindings to find
errors in their object management code.
Mutex init can fail

It is obviously quite a serious problem if this happens, but mutex
initialization can fail and we should detect it.  It's a bit like
a memory allocation failure, in that you're probably pretty screwed
if this occurs, but at least we'll catch it.
Merge pull request #1627 from arrbee/iterator-api-improvements

Make iterators use GIT_ITEROVER & smart advance