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.
Don't segfault if transport doesn't support push.

Instead, set an more informative error message.
cache should contain on-disk (filtered) file size
Add skipping of unknown commit headers

This moves the check for the "encoding" header into a loop which
is just scanning for non-required headers at the end of a commit
header.  That loop will skip unrecognized lines (including header
continuation lines) until a terminating completely blank line is
found, and only then does it move to reading the commit message.
Test that pushs properly fail for transports that don't provide a push implementation.
Merge pull request #1254 from ethomson/index_filtered_size

cache should contain on-disk (filtered) file size
Merge pull request #1255 from arrbee/fix-signed-commit-header-parsing

Add skipping of unknown commit headers
Merge pull request #1247 from sba1/dont-segfault-if-transport-doesnt-support-push

Don't segfault if transport doesn't support push.
Merge pull request #1244 from carlosmn/pack-evict

A comparison of eviction algorithms for the delta base cache