On the log-addressing branch:
Introduce a new abstraction, the "revsion file" which ensures that all
files pertaining to a revision / pack file are read consistently wrt.
being packed.  This is needed to read file offsets from index that
match the actual rev / pack file.

In this commit, we introduce the new API and use it when reading data
from the rev / pack file.  We don't read index files consistently, yet.

* subversion/libsvn_fs_fs/rev_file.h
  (): new file
  (svn_fs_fs__packed_number_stream_t): publish previously private type
  (svn_fs_fs__revision_file_t): declare new object type
  (svn_fs_fs__init_revision_file,
   svn_fs_fs__open_pack_or_rev_file,
   svn_fs_fs__reopen_revision_file,
   svn_fs_fs__open_proto_rev_file,
   svn_fs_fs__close_revision_file): declare operations on that object

* subversion/libsvn_fs_fs/rev_file.c
  (): new file
  (open_pack_or_rev_file): logic taken from svn_fs_fs__open_pack_or_rev_file
                           in utils.c
  (svn_fs_fs__init_revision_file,
   svn_fs_fs__open_pack_or_rev_file,
   svn_fs_fs__reopen_revision_file,
   svn_fs_fs__open_proto_rev_file,
   svn_fs_fs__close_revision_file): implement new API

* subversion/libsvn_fs_fs/util.h
  (svn_fs_fs__open_pack_or_rev_file): remove here

* subversion/libsvn_fs_fs/util.c
  (svn_fs_fs__open_pack_or_rev_file): remove here

* subversion/libsvn_fs_fs/cached_data.c
  (block_read,
   open_and_seek_revision,
   open_and_seek_representation): replace plain APR file with new struct
  (open_and_seek_transaction): ditto; use new API
  (get_node_revision_body): use new type and API for committed data;
                            keep old code for txn data with file varible
                            being renamed for clarity
  (get_fs_id_at_offset,
   svn_fs_fs__rev_get_root): use new type and API
  (shared_file_t): replace plain file member with new struct;
                   drop stream member because it is already provided by
                   the new revision file struct
  (get_file_offset,
   rs_aligned_seek): adapt to struct change
  (auto_open_shared_file): use new API
  (auto_read_diff_version,
   create_rep_state_body
   read_delta_window,
   read_plain_window,
   get_contents): adapt to struct change
  (svn_fs_fs__get_file_delta_stream,
   svn_fs_fs__get_changes): ditto; use new API
  (init_rep_state,
   cache_windows,
   block_read_windows,
   block_read_contents,
   auto_select_stream,
   block_read_changes,
   block_read_noderev,
   block_read): adapt to struct change; replace file+stream with new struct

* subversion/libsvn_fs_fs/index.h
  (svn_fs_fs__packed_stream_close): publish previously private function

* subversion/libsvn_fs_fs/index.c
  (packed_stream_close): rename to ...
  (svn_fs_fs__packed_stream_close): ... this
  (svn_fs_fs__packed_number_stream_t,
   stream_error_create,
   packed_stream_open,
   packed_stream_get,
   get_l2p_header_body,
   get_l2p_page_info,
   get_l2p_page,
   prefetch_l2p_pages,
   l2p_index_lookup,
   get_l2p_header,
   svn_fs_fs__l2p_get_max_ids,
   get_p2l_header,
   get_p2l_page_info,
   get_p2l_page,
   prefetch_p2l_page,
   get_p2l_keys,
   p2l_index_lookup,
   svn_fs_fs__p2l_index_lookup,
   p2l_entry_lookup,
   svn_fs_fs__p2l_entry_lookup,
   svn_fs_fs__p2l_get_max_offset): adapt to renamed stream type and
                                   close function

* subversion/libsvn_fs_fs/recovery.c
  (recover_get_largest_revision,
   recover_find_max_ids): replace plain APR file with new struct
  (svn_fs_fs__find_max_ids): ditto; use new API

* subversion/libsvn_fs_fs/verify.c
  (compare_p2l_to_rev): replace plain APR file with new struct

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