In FSX, assign unique IDs immediately when creating items in a transaction.

Noderev IDs in particular, are now unique from the start.  That requires
(logical) item numbers to be allocated before we know their (physical)
offset is known.

* subversion/libsvn_fs_x/id.h
  (svn_fs_x__id_txn_create): Add the item number as a parameter to enforce
                             that all noderev ids are "complete" and thus
                             unique.

* subversion/libsvn_fs_x/id.c
  (svn_fs_x__id_txn_create): Update implementation.

* subversion/libsvn_fs_x/transaction.c
  (allocate_item_index): Allocate the item index only, i.e. the index
                         file information must be stored explicitly at
                         some later point.
  (get_new_txn_node_id,
   svn_fs_x__reserve_copy_id): Make node and copy ID unique amoungst
                               different transactions.
  (svn_fs_x__create_node,
   svn_fs_x__create_successor): Create the noderev with a unique ID as well.
  (rep_write_contents_close,
   write_hash_delta_rep): Explicitly write the proto index file as that is
                          no longer part of the item number allocation.
  (svn_fs_x__set_proplist): Like all items, property reps are now expected
                            to have item index numbers assigned to them
                            from the start.
  (get_final_id): Replace transaction and undefined change set with
                  the current revision changeset. 
  (write_final_rev): Since the noderev ID is now "complete" from its
                     creation on, we can simply handle it like the other
                     ID parts.  Again, the proto index has to be written
                     explicitly.


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