Change model registry storage from being a table of opaque objects, to a graph of properties.

This doesn't quite satisfy the story goal of being able to target rules to nested properties, because we don't know about the nested properties until we create the objects. If we are using by-type bindings then we don't know that we need to create the parent object. To solve this we need to start populating the graph when something is registered (i.e. insert it in a kind of pending state, with its links also in a pending state) and then only populate the data when the node is “initialised”.

We are also only respecting one level of depth at the moment. That is, we treat (as far as the model graph is concerned) the properties of managed elements as unmanaged. Later stories will make this fully “transitive”.

+review