This class represents a data source model. The underlying model is just a map
of values or maps, but this class abstracts accessing and storing the data.
If a value in a model can be more efficiently lazily loaded, this class
perhaps should not be used, but for non event driven models, it should
suffice for many cases. If a data source inherently has a better way to store
the data, then it may choose to not use this class. Note: Not all data
sources can store a key in both namespace.value and namespace.value.other, in
that case, to make namespace.value's actual value, it should be stored as