On the fsx-id branch:  Teach FSX's svn_fs_id_t implementation to work
with only the noderev-ID as data.  An encapsulated context object gives
access to the underlying repository if API requests cannot be fed from
the noderev-ID alone.

Having a separate context object that can be shared e.g. between all
items in a collection such as a directory, keeps the ID construction
cheap.  It also keeps the FS and access management overhead to a minimum.
The context object itself is designed to keep construction cheap and
access moderately cheap as long as you don't access the ID object after
you closed the FS.

Also, we discourage the access to the FS ID objects now on /trunk.
The few situations where we still use it, the caller will also access
the data "behind" the ID if two IDs are not the same (e.g. tree delta).
So, we are effectively priming the caches but don't introduce extra
disk accesses.

* subversion/libsvn_fs_x/fs_id.h
  (svn_fs_x__id_context_t,
   svn_fs_x__id_create_context): New context support.
  (svn_fs_x__id_create): Replace the node-ID with a context object.

* subversion/libsvn_fs_x/fs_id.c
  (fs_x__id_t): 
  (id_unparse): 
  (id_compare): Request data from the 
  (svn_fs_x__id_create_context):
  (svn_fs_x__id_create): Update constructor.

* subversion/libsvn_fs_x/dag.c
  (svn_fs_x__dag_get_fs_id): Update caller. 

* subversion/libsvn_fs_x/tree.c
  (x_dir_entries,
   construct_fs_path_change,
   x_paths_changed): Update ID construction and provide it with a shared
                     context for all ID objects in the same collection.

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