Allow NULL error message prefix when class=GITERR_OS
Merge pull request #2513 from ethomson/giterr_null_msg

Allow NULL error message prefix when class=GITERR_OS
Don't include the unreadable tests on win32
Merge pull request #2517 from ethomson/no_win_unreadable

Don't include the unreadable tests on win32
Custom transport: minor cleanups

 * Move the transport registration mechanisms into a new header under
   'sys/' because this is advanced stuff.
 * Remove the 'priority' argument from the registration as it adds
   unnecessary complexity.  (Since transports cannot decline to operate,
   only the highest priority transport is ever executed.)  Users who
   require per-priority transports can implement that in their custom
   transport themselves.
 * Simplify registration further by taking a scheme (eg "http") instead
   of a prefix (eg "http://").
Merge pull request #2469 from ethomson/transport2

Custom transport: minor cleanups
Don't run the ssh clone tests against http remotes
Remove the refs/notes/commits that we push in test

The online::push::notes test pushes a note but leaves it hanging
around for other tests to stumble across when they're validating
that they're seeing the refs they expect to see.  Clean it up on
exit.
Free references during push validation
online::clone::credentials support default credentials
Perform HTTP keep-alive
Introduce git_buf_decode_base64

Decode base64-encoded text into a git_buf
Add GSSAPI support for SPNEGO/Kerberos auth over HTTP
Introduce proper http authentication API
Merge pull request #2497 from ethomson/kerberos3

SPNEGO authentication via GSSAPI
git_remote_ls() should return an error if the transport is not available
Merge pull request #2521 from jacquesg/remote-ls-not-connected

git_remote_ls() crashes before connect is called
Removing a completed starter project.

Removing the starter project for adding support for the symref
extension (#2006) from PROJECTS.md, as this seems to have been
completed with the merge of #2376.
http: make sure we can consume the data we request

The recv buffer (parse_buffer) and the buffer have independent sizes and
offsets. We try to fill in parse_buffer as much as possible before
passing it to the http parser. This is fine most of the time, but fails
us when the buffer is almost full.

In those situations, parse_buffer can have more data than we would be
able to put into the buffer (which may be getting full if we're towards
the end of a data sideband packet).

To work around this, we check if the space we have left on our buffer is
smaller than what could come from the network. If this happens, we make
parse_buffer think that it has as much space left as our buffer, so it
won't try to retrieve more data than we can deal with.

As the start of the data may no longer be at the start of the buffer, we
need to keep track of where it really starts (data_offset) and use that
in our calculations for the real size of the data we received from the
network.

This fixes #2518.
Check if the refspec matches before transforming