enhance Batch.addBatch to allow tree structures.

`Batch.addBatch()` can now be used to create a nested hierarchy of batches. Timestamps will propagate appropriately, so that child batches will be `parent_timestamp+1`, if a parent timestamp is specified but a child timestamp is not.