Better delta base cache hash implementation
Delta base cache was a simple constant-size 256-entry hash table where
hash collisions always caused the previous value to be dropped.
Replace it with a more featured hash table that doesn't drop items at
collisions (keeps them in lists instead) and can grow the hash size
depending on number of items.
The documentation of core.deltaBaseCacheLimit should be changed;
currently it claims that the default should be reasonable for all
except the largest projects, and "You probably do not need to adjust
this value.". However now that the code is able to really use larger
cache amounts increasing the size can give very significant benefits
for at least 'git log -S' speed.