Don't rely on a cached hashcode 'cos it could easily get invalidated
More work on idempotent updates.

 - the BundleDAO now returns a mutation object which contains a state
   and an object (instead of just an object). The state indicates whether
   the object was created, updated, or unchanged
 - All the relevant higher level APIs updates to use this
 - The REST interface does not yet indicate if an item was changed or not.
   Maybe we should add this in.
 - UkrainianRepoImporter and its command have been deleted because
   their jobs are done from the JRuby script now.
 - Still plenty of improvements/tests needed.
Fix totally broken getBundle(bundle, path) code and allow -1 index for insert
Add a dodgy equality test to check order is disregarded
Rename some bits and add some idempotency tests