Client side needs nested models and collections

We need a generic model that can have models and collections as attributes.

One example use case of this is with the plumbing component. Collections of `EndpointModel`s are quite low level structures. It makes more sense for collections of `EndpointModel`s to be nested under their associated `StateModel`s. We then can simply sync the collections of `StateModel`s with the server, without having to also sync the endpoints associated to each separately.