Change cmds update logic to use diffs at the command level not timeline level
Improve algorithm for updating commands

Previously commands were updated by going back the specified
time, finding all timelines, removing those timelines from the
HDF5 history and then adding commands from new timelines.  This
had problems, in particular related to the fact that
deletion in HDF5 is inefficient and not recommended.  The
interleaving of commands from different timelines when time
ordered was a problem.

The new algorithm is to go back the specified time and then
effectively sync the HDF5 commands and the timeline commands
on the first block of at least 500 identical commands.  That
is about 3 timeline segments on average.  At the
first diff after that all HDF5 commands are truncated and replaced
by the new timeline commands.  This is more reliable and also
doesn't unnecessarily truncate the HDF5 file as the previous
algorithm did.