oidmap: Enhance the khash wrapper
tests: Add "describe" test repository

Built with the following script:

	#!/bin/sh

	test_tick () {
		sleep 10
	}

	test_tick &&
	echo one >file && git add file && git commit -m initial &&
	one=$(git rev-parse HEAD) &&

	git describe --always HEAD &&

	test_tick &&
	echo two >file && git add file && git commit -m second &&
	two=$(git rev-parse HEAD) &&

	test_tick &&
	echo three >file && git add file && git commit -m third &&

	test_tick &&
	echo A >file && git add file && git commit -m A &&
	test_tick &&
	git tag -a -m A A &&

	test_tick &&
	echo c >file && git add file && git commit -m c &&
	test_tick &&
	git tag c &&

	git reset --hard $two &&
	test_tick &&
	echo B >side && git add side && git commit -m B &&
	test_tick &&
	git tag -a -m B B &&

	test_tick &&
	git merge -m Merged c &&
	merged=$(git rev-parse HEAD) &&

	git reset --hard $two &&
	test_tick &&
	echo D >another && git add another && git commit -m D &&
	test_tick &&
	git tag -a -m D D &&
	test_tick &&
	git tag -a -m R R &&

	test_tick &&
	echo DD >another && git commit -a -m another &&

	test_tick &&
	git tag e &&

	test_tick &&
	echo DDD >another && git commit -a -m "yet another" &&

	test_tick &&
	git merge -m Merged $merged &&

	test_tick &&
	echo X >file && echo X >side && git add file side &&
	git commit -m x
object: introduce git_describe_object()
Add a test (failing) for a work tree status.

When thees is an unreadable folder, we should still be able
to enumerate status.
Simplify the test.
Return a specific error for EACCES.
Skip unreadable files for now.
Fix compiler warning (git_off_t cast to size_t).

Use size_t for page size, instead of long. Check result of sysconf.
Use size_t for page offset so no cast to size_t (second arg to p_mmap).
Use mod instead div/mult pair, so no cast to size_t is necessary.
Rename GIT_ENOACCESS -> GIT_EUNREADABLE
Skip unreadable files for now.
Start adding GIT_DELTA_UNREADABLE and GIT_STATUS_WT_UNREADABLE.
Return GIT_FILEMODE_UNREADABLE for files that fail to stat.
Remove errant whitespace.
Simplify the no permission test.
Remove errant newline
Return GIT_DELTA_UNREADABLE for a file with a mode change
Try a value for UNREADABLE that won't get masked out?!
Don't need to duplicate this code.
We do expect the foo path in the nopermissions test
Remove GIT_FILEMODE_NEW as it's unused.

And use 0 for GIT_FILEMODE_UNREADABLE.