On the fsfs-format7 branch:  Implement our first container object.
We use it to significantly reduce the size of change lists in memory
and on disk.

It's not being used right now - that will follow in later commits.

* subversion/include/svn_error_codes.h
  (SVN_ERR_FS_CONTAINER_INDEX): declare a new error code

* subversion/libsvn_fs_fs/changes.h
  (svn_fs_fs__changes_t): declare container type
  (svn_fs_fs__changes_create,
   svn_fs_fs__changes_start_list,
   svn_fs_fs__changes_append_change,
   svn_fs_fs__changes_append_list,
   svn_fs_fs__changes_estimate_size,
   svn_fs_fs__changes_finalize): declare the construction / write API
  (svn_fs_fs__changes_get_list): declare the getter API
  (svn_fs_fs__write_changes_container,
   svn_fs_fs__read_changes_container): declare the I/O API

* subversion/libsvn_fs_fs/changes.c
  (CHANGE_TEXT_MOD,
   CHANGE_PROP_MOD,
   CHANGE_TXN_NODE,
   CHANGE_NODE_SHIFT,
   CHANGE_NODE_MASK,
   CHANGE_NODE_NONE,
   CHANGE_NODE_FILE,
   CHANGE_NODE_DIR,
   CHANGE_NODE_UNKNOWN,
   CHANGE_KIND_SHIFT,
   CHANGE_KIND_MASK,
   CHANGE_KIND_MODIFY,
   CHANGE_KIND_ADD,
   CHANGE_KIND_DELETE,
   CHANGE_KIND_REPLACE,
   CHANGE_KIND_RESET): define flags & masks
  (binary_change_t,
   svn_fs_fs__changes_t): define data types
  (changes_create_body,
   append_change_body): implementation bodies
  (svn_fs_fs__changes_create,
   svn_fs_fs__changes_start_list,
   svn_fs_fs__changes_append_change,
   svn_fs_fs__changes_append_list,
   svn_fs_fs__changes_estimate_size,
   svn_fs_fs__changes_finalize,
   svn_fs_fs__changes_get_list,
   svn_fs_fs__write_changes_container,
   svn_fs_fs__read_changes_container): implement APIs


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