Travis: move the valgrind run to allowed_failures

We don't need to know the result of the travis run before determining
whether we want to consider the merge as successful.
Travis: do non-threadsafe builds

When flipping the default to threadsafe, we never made sure that the
tests were building non-threadsafe variants. Specify which thead-safety
we want for each.
peel: reject bad queries with EINVALIDSPEC

There are some combination of objects and target types which we know
cannot be fulfilled. Return EINVALIDSPEC for those to signify that there
is a mismatch in the user-provided data and what the object model is
capable of satisfying.

If we start at a tag and in the course of peeling find out that we
cannot reach a particular type, we return EPEEL.
Plug leaks

Valgrind is now clean except for libssl and libgcrypt.
Merge pull request #2718 from libgit2/cmn/peeling-errors

peel: reject bad queries with EPEEL
Merge pull request #2727 from libgit2/cmn/travis-jobs

Regain non-threadsafe builds and make the valgrind build failable
fix cl_git_mkfile() to test for -1 rather than 0 for errors from p_creat()
describe: check error codes
Merge pull request #2736 from ethomson/describe_errorcode

describe: check error codes
Merge pull request #2734 from jeffhostetler/jeffhostetler/git_mkfile

fix cl_git_mkfile() to test for -1 rather than 0 for errors from p_creat...
Add test script
Added Xcode script
Added git_stash_apply() and git_stash_pop() APIs
Fixed deleting refs in local remotes not working anymore