Factor out update().

This splits update() into update-the-object (update()) and
updateMetadata().  Item wants to make some final adjustments after
metadata update and before object update.  The other types' update()
methods, for now, just call updateMetadata() and then super.update().