Enforce the "everybody or nobody" restriction on revprop caching, i.e.
either all processes (usually servers) or non must use revprop caching.

This patch makes sure that the first process to use revprop caching will
create the revprop generation file before even reading and caching any
revprops - instead of auto-creating it upon the first write.  Then this
file is being used as an indicator that the repo has been accessed at
least once using revprop caching.  FS instances without that feature
enabled will then be banned from writing any revprops.

To make this workable, applications that may write revprops but are not
servers themselves (the latter having explicit revprop caching options)
need to engage the revprop caching infrastructure automatically if the
repo that they are accessing requires it.  svnadmin, svnlook and ra_local
enable this new mode.

* subversion/include/svn_fs.h
  (SVN_FS_CONFIG_FSFS_CACHE_REVPROPS): Document that there is now yet
                                       another mode.

* subversion/libsvn_fs_fs/fs.h
  (fs_fs_data_t): Add the flag allowing on-demand activation of revprop
                  caching.

* subversion/libsvn_fs_fs/fs_fs.h
  (svn_fs_fs__initialize_revprop_caches): Declare new function to init
                                          the revprop caches only.

* subversion/libsvn_fs_fs/caching.c
  (read_config): Handle the new revprop caching mode.
  (cache_key_prefix): Common functionality factored out from 
                      svn_fs_fs__initialize_caches.
  (svn_fs_fs__initialize_revprop_caches): Implement, mainly taking out
                                          of ...
  (svn_fs_fs__initialize_caches): ... this.  Update after refactoring.

* subversion/libsvn_fs_fs/revprops.c
  (init_generation_baton_t,
   init_revprop_generation_file): New code to create the revprop generation
                                  file before the first cached revprop
                                  access (read or write).
  (read_revprop_generation_file): Trigger auto-creation of that file.
  (enforce_consistent_caching): New function containing the actual
                                cache settings consistency check.
  (svn_fs_fs__set_revision_proplist): Trigger the new check to make sure
                                      we don't modify revprops w/o telling
                                      caching applications.

* subversion/libsvn_ra_local/split_url.c
  (svn_ra_local__split_URL): Set "enable revprop caching on demand" feature
                             instead of "no revprop caching" on open repos.

* subversion/svnadmin/svnadmin.c
  (open_repos): Use the same mode here.

* subversion/svnlook/svnlook.c
  (get_ctxt_baton): And here.

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
  (enforce_consistent_revprop_caching): New test covering the new mode as
                                        well as new the consistency check.
  (test_funcs): Register new test. 


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