fix write optimization in update_many

Current code at line 653 uses dict() to remove duplicates. This works, but it leaves the list of points not in interval order. Later runs of contiguous points are batched together into a packed string so they can be write() at once. But because the list is out of order, this batching work is defeated, leaving many batches with just on point in them.

This fix removes the dict() call and uses last value in run of points with duplicate intervals during the loop that creates the list of packed strings for batching.