test that suggests tags arent fully peeled during push
odb: wrap the stream reading and writing functions

This is in preparation for moving the hashing to the frontend, which
requires us to handle the incoming data before passing it to the
backend's stream.
odb: perform the stream hashing in the frontend

Hash the data as it's coming into the stream and tell the backend what
its name is when finalizing the write. This makes it consistent with
the way a plain git_odb_write() performs the write.
odb: remove a duplicate object header formatting function
push: handle tag chains correctly

When dealing with a chain of tags, we need to enqueue each of them
individually, which means we can't use `git_tag_peel` as that jumps
over the intermediate tags.

Do the peeling manually so we can look at each object and take the
appropriate action.
Give credit to PHP for the p_readlink function in posix_w32.c
Merge pull request #1789 from martinwoodward/posix_win32-attribution

Give credit to PHP for the p_readlink function in posix_w32.c
Add new git_signature_default API using config

This adds a new API for creating a signature that uses the
config to look up "user.name" and "user.email".
New test that inits repo and make commit
Add example like "git init"
Improve isolation of new test from user environs
Merge pull request #1790 from libgit2/examples-init

Add "git init"-like example
Merge pull request #1778 from libgit2/push_tag_to_tag_test

push: handle tag chains correctly
odb: make it clearer that the id is calculated in the frontend

The frontend is in charge of calculating the id of the objects. Thus
the backends should treat it as a read-only value. The positioning in
the function signature made it seem as though it was an output
parameter.

Make the id const and move it from the front to behind the subject
(backend or stream).
odb: document git_odb_stream

Clarify the role of each function and in particular mention that there
is no need for the backend or stream to worry about the object's id,
as it will be given when `finalize_write` is called.
odb: avoid hashing twice in and edge case

If none of the backends support direct writes and we must stream the
whole file, we already know what the object's id should be; so use the
stream's functions directly, bypassing the frontend's hashing and
overwriting of our existing id.
odb: Straighten oid prefix handling
ci: Make Valgrind run on Travis
Merge pull request #1793 from libgit2/ntk/valgrind

Bring Valgrind back!
index: report when it's locked

Report the index being locked with its own error code in order to be
able to differentiate, as a locked index is typically the result of a
crashed process or concurrent access, both of which often require user
intervention to fix.