Expose Model in Solver interface
WIP: Expose Solver.Model for Diagnostics

This allows the solver to work with abstract roles rather than
interfaces. One visible effect of this is that the diagnostics now
put "#source" after interfaces being used to select source code.

TODO:
* Solver interface could be more abstract
* XXX bits where we ignore self commands (existing bug)
* Check effect of ignored deps