On the log-addressing branch:  Implement the reverse index with all
caching infrastructure but don't create nor use it right now.

* subversion/libsvn_fs_fs/fs.h
  (PATH_EXT_P2L_INDEX): declare a new file name extension
  (CONFIG_OPTION_P2L_PAGE_SIZE): new config file option
  (fs_fs_data_t): add p2l index page size member;
                  add caches for p2l index header and pages

* subversion/libsvn_fs_fs/caching.c
  (svn_fs_fs__initialize_caches): initialize new caches

* subversion/libsvn_fs_fs/fs_fs.c
  (read_config): read new config options
  (write_config): add new options to config template

* subversion/libsvn_fs_fs/index.h
  (svn_fs_fs__p2l_entry_t
   svn_fs_fs__p2l_proto_index_open,
   svn_fs_fs__p2l_proto_index_add_entry,
   svn_fs_fs__p2l_index_create): declare p2l index creation API
  (svn_fs_fs__p2l_index_lookup,
   svn_fs_fs__p2l_entry_lookup,
   svn_fs_fs__p2l_item_lookup): declare p2l index lookup API
  (svn_fs_fs__serialize_p2l_header,
   svn_fs_fs__deserialize_p2l_header,
   svn_fs_fs__serialize_p2l_page,
   svn_fs_fs__deserialize_p2l_page): cache (de-)serialization support

* subversion/libsvn_fs_fs/index.c
  (p2l_header_t): declare index header runtime structure

  (svn_fs_fs__p2l_proto_index_open,
   svn_fs_fs__p2l_proto_index_add_entry,
   svn_fs_fs__p2l_index_create): implement p2l index creation API

  (get_p2l_header): parse index header from stream

  (p2l_page_info_baton_t,
   p2l_page_info_copy,
   p2l_page_info_func,
   get_p2l_page_info): get page info from header cache;
                       populate cache as necessary

  (read_entry,
   get_p2l_page): read an index page from stream
   prefetch_p2l_page): read index page(s) and populate the cache

  (get_p2l_keys,
   p2l_index_lookup,
   svn_fs_fs__p2l_index_lookup): index lookup returning a whole page

  (compare_p2l_entry_offsets,
   get_p2l_entry_from_cached_page,
   p2l_entry_lookup_func,
   p2l_entry_lookup,
   svn_fs_fs__p2l_entry_lookup): index lookup returning a single entry

  (svn_fs_fs__serialize_p2l_header,
   svn_fs_fs__deserialize_p2l_header,
   svn_fs_fs__serialize_p2l_page,
   svn_fs_fs__deserialize_p2l_page): implement cache (de-)serialization support

* subversion/libsvn_fs_fs/util.h
  (svn_fs_fs__path_p2l_index,
   svn_fs_fs__path_p2l_proto_index): declare new file path constructors

* subversion/libsvn_fs_fs/util.c
  (svn_fs_fs__path_p2l_index,
   svn_fs_fs__path_p2l_proto_index): implement


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/log-addressing@1511886 13f79535-47bb-0310-9956-ffa450edef68