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.