DatasetInPool: define create hook
Dataset trees

Branches are now placed in dataset trees. All snapshots in a dataset
tree share the same history. When the history flow breaks, a new
dataset tree is created.

Rollback chain does not yet support cross-tree rollback.