pack: fixes to the cache

The offset should be git_off_t, and we should check the return value
of the mutex lock function.
Clear local error variable after invoking giterr_clear().
add an index_remove_bypath that removes conflicts, renamed add_from_workdir to match
checkout: Teach checkout to cope with orphaned Head

Fix #1236
Fix Travis compilation warnings
Do not use GIT_CPDIR_CHMOD flag when copying the template.

This is an intermin solution. While this essentially disables the
--shared flag feature, previously external templates did not work
at all. This change fixes the previously corrected, and since
then failing, repo_init__extended_with_template() test.

The problem is now documented in the source code comments.
Now checks in the template test whether the description file has
been properly copied.

This is a minimal effort to test whether the template really has
been used when creating an repo with external templates.
Altered the description of the template.

Before, it was identical to the default template making it difficult
to check, if the proper template was copied an external template
test.
pack: evict objects from the cache in groups of eight

This drops the cache eviction below libcrypto and zlib in the perf
output. The number has been chosen empirically.
pack: evict all of the pages at once

Somewhat surprisingly, this can increase the speed considerably, as we
don't bother trying to decide what to evict, and the most used entries
are quickly back into the cache.
Merge pull request #1242 from sba1/init-with-template-fix

Some fixes for external template support
Merge pull request #1238 from nulltoken/fix/checkout-index

checkout: Teach checkout to cope with orphaned Head
status: Enhance git_status_file() test coverage
Simplify git_diff__paired_foreach icase handling
Minor iterator API cleanups

In preparation for further iterator changes, this cleans up a few
small things in the iterator API:

* removed the git_iterator_for_repo_index_range API
* made git_iterator_free not be inlined
* minor param name and test function name tweaks
Fix err msg for ambiguous path in git_status_file

Returning GIT_EAMBIGUOUS from inside the status callback gets
overridden with GIT_EUSER.  `git_status_file` accounted for this
via the callback payload, but was allowing the error message to
be cleared.  Move the `giterr_set` call outside the callback to
where the EUSER case was being dealt with.
Update iterator API with flags for ignore_case

This changes the iterator API so that flags can be passed in to
the constructor functions to control the ignore_case behavior.
At this point, the flags are not supported on tree iterators (i.e.
there is no functional change over the old API), but the API
changes are all made to accomodate this.

By the way, I went with a flags parameter because in the future
I have a couple of other ideas for iterator flags that will make
it easier to fix some diff/status/checkout bugs.
Test for ignore_case ranges on workdir iterator

This adds a test that confirms that the working directory iterator
can actually correctly process ranges of files case insensitively
with proper sorting and proper boundaries.
Add payload "_r" versions of bsearch and tsort

git__bsearch and git__tsort did not pass a payload through to the
comparison function.  This makes it impossible to implement sorted
lists where the sort order depends on external data (e.g. building
a secondary sort order for the entries in a tree).  This commit
adds git__bsearch_r and git__tsort_r versions that pass a third
parameter to the cmp function of a user payload.
Add git_path_icmp to case-insensitive path cmp

This adds git_path_icmp to complement git_path_cmp.