Client side needs view collections

We need some extendable base structure that takes in a collection of models and provides:
  - Looking up views by their model ids
  - Accessing all the views at once
  - Removing 'dead' views on render calls (views that no longer have corresponding models in the collection)
  - Adding 'new' views (models in the collection that currently do not have views representing them)
  - Rendering all the views in one go

Two use cases I've found for this so far:
- Adding/removing/keeping track of endpoint views on a `StateView` in the plumbing component.
- Adding/removing/keeping track of state views in a `PlumbView` in the plumbing component