Backport .travis.yml
Merge branch 'development'

Conflicts:
	.travis.yml
Merge branch 'development'
odb: Do not allow duplicate on-disk backends
config: allow setting multivars when none exist yet

Adding a multivar when there are no variables with that name set
should set the variable instead of failing.
remote: handle multiple refspecs

A remote can have a multitude of refspecs. Up to now our git_remote's
have supported a single one for each fetch and push out of simplicity
to get something working.

Let the remotes and internal code know about multiple remotes and get
the tests passing with them.

Instead of setting a refspec, the external users can clear all and add
refspecs. This should be enough for most uses, though we're still
missing a querying function.
remote: allow querying for refspecs

Introduce git_remote_{fetch,push}_refspecs() to get a list of refspecs
from the remote and rename the refspec-adding functions to a less
silly name.

Use this instead of the vector index hacks in the tests.
refspec: unify the string and parsed data

It used to be separate as an attempt to make the querying easier, but
it didn't work out that way, so put all the data together.

Add git_refspec_string() as well to get the original string, which is
now stored alongside the independent parts.
Move git_config_backend to include/git2/sys

Moving backend implementor objects into include/git2/sys so the
APIs can be isolated from the ones that normal libgit2 users
would be likely to use.
Move odb_backend implementors stuff into git2/sys

This moves some of the odb_backend stuff that is related to the
internals of an odb_backend implementation into include/git2/sys.

Some of the stuff related to streaming I left in include/git2
because it seemed like it would be reasonably needed by a normal
user who wanted to stream objects into and out of the ODB.

Also, I added APIs for traversing the list of backends so that
some of the tests would not need to access ODB internals.
Added git_repository_new function
Move some low-level repo fns to include/git2/sys
Added git_commit_create_oid
Move git_commit_create_from_oids into sys/commit.h

Actually this renames git_commit_create_oid to
git_commit_create_from_oids and moves the API declaration to
include/git2/sys/commit.h since it is a dangerous API for general
use (because it doesn't check that the OID list items actually
refer to real objects).
Move refdb_backend to include/git2/sys

This moves most of the refdb stuff over to the include/git2/sys
directory, with some minor shifts in function organization.

While I was making the necessary updates, I also removed the
trailing whitespace in a few files that I modified just because I
was there and it was bugging me.
Move git_reference__alloc to include/git2/sys

Create a new include/git2/sys/refs.h and move the reference alloc
functions there.  Also fix some documentation issues and some
minor code cleanups.
Add missing prototype for p_realpath().
Merge pull request #1495 from jasperla/development

Add missing prototype for p_realpath().
Merge pull request #1485 from libgit2/include-git2-sys

Create include/git2/sys and move backend APIs there
odb: Disable inode checks for Win32