Add filesystem view caching

Cache a cache for git's view of the working tree.  This can be used to
reduce the number of syscalls to opendir, readdir, and lstat.

Signed-off-by: David Turner <dturner@twitter.com>
fs_cache: Make the fs_cache path absolute on first query

When we first call get_fs_cache_file, set git_fs_cache_file to an
absolute path.  This means that writing the fs_cache in atexit will
work despite intervening chdirs.

Signed-off-by: David Turner <dturner@twitter.com>
Watchman support

Add support for filesystem view caching and updating via Facebook's
Watchman daemon.

Signed-off-by: David Turner <dturner@twitter.com>
hashmap: Remove unused functions

Remove str(i?)hash functions from hashmap.c as they are unused

Signed-off-by: David Turner <dturner@twitter.com>
hashmap: Use SSE to speed up hashmap

The original FNV hashing algorithm processes one byte at a time.  SSE
lets us process more.  This is a lackadaisically tuned implementation;
in my tests, it was the fastest by a hair.  It is about twice as fast
as the original FNV, for about a 5-10% speedup on git status (with
watchman).

Note that you are unlikely to see speed improvements in test-hashmap,
since it uses very short, very similar strings.

Signed-off-by: David Turner <dturner@twitter.com>