Improve membuffer cache's index efficiency:  When the index ("directory")
gets filled up, some entry groups overflow will quite early due to the
randomized mapping for keys to groups.  I.e. some cache entries would be
dropped although only of a portion of the index table is actually used.

Therefore, set about 1/3 of the index table aside as "spare groups" and
allow filled up groups to chain into that pool of spare groups.

* subversion/libsvn_subr/cache-membuffer.c
  (): update description of the addressing scheme
  (group_header_t): add members to form a group chain
  (MAX_GROUP_CHAIN_LENGTH): new constant
  (svn_membuffer_t): add spare group management members

  (is_group_initialized,
   initialize_group): moved up
  (allocate_spare_group,
   free_spare_group,
   last_group_in_chain,
   get_group): new group chain utility functions

  (drop_entry,
   find_entry): update to handle group chains
  (svn_cache__membuffer_cache_create): divide groups into normal and spares
  (svn_membuffer_get_segment_info): update to handle group chains

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1519276 13f79535-47bb-0310-9956-ffa450edef68