Interface for Solver_core
Split core requirements into its own type
Moved remaining XML code out of Solver_core
Replaced (iface, source) pairs in solver with more general Model.Role.t

This removes all the places where Solver_core made assumptions about
"source" (e.g. that a dependency is always on a binary).

This limitation is now pushed back to Solver.Model.