LSMTree manages a tree of layers to provide a key/value store. Each layer contains deltas on
the preceding layer. The top layer is an in-memory mutable layer. Layers can be compacted to
form a new combined layer.
A LayerSet provides a snapshot of the layers at a particular point in time, and allows you to
get an iterator. Iterators borrow the layers so something needs to hold reference count.