Factor data out of Resolver

This is a behavior-preserving change (except TODO: fix tests, trivially).

Resolver was responsible for interning and storing UnitVersions and Constraints, but it didn’t really look at them.  Now the data gets its own class.

Direction of work:  In order to have a new solver “back end,” we first need to separate the front end from the back end.  This means having more than one storage hash, and storage format, for units and constraints.  For example, just because a unit-version has been loaded from the catalog doesn’t mean it should be available to the solver.  And if a solver wants to use “mori,” that should be an internal detail to the solver.