Make core.safecrlf work on LF-ending platforms

If you enabled core.safecrlf on an LF-ending platform, we would
error even for files with all LFs.  We should only be warning on
irreversible mappings, I think.
Just don't CRLF filter if there are no CRs
smart: store reported symrefs

The protocol has a capability which allows the server to tell us which
refs are symrefs, so we can e.g. know which is the default branch.

This capability is different from the ones we already support, as it's
not setting a flag to true, but requires us to store a list of
refspec-formatted mappings.

This commit does not yet expose the information in the reference
listing.
remote: expose the remote's symref mappings

Add a symref_target field to git_remote_head to expose the symref
mappings to the user.
local transport: expose the symref data

When using the local transport, we always have the symbolic information
available, so fill it.
remote: add api to guess the remote's default branch

If the remote supports the symref protocol extension, then we return
that, otherwise we guess with git's rules.
clone: make use of the remote's default branch guessing

Let's use the remote's default branch guessing instead of reinventing
one ourselves with callbacks.
clone: get rid of head_info

Since we no longer need to push data to callbacks, there's no need for
this truct.
Include windows.h on win32 for Sleep
Merge pull request #2379 from ethomson/status_win32

Include windows.h on win32 for Sleep
Merge pull request #2375 from libgit2/rb/safecrlf-on-lf-platform

Make core.safecrlf not generate an error on LF-ending platforms
Merge pull request #2376 from libgit2/cmn/remote-symref

Add support for the symref extension