Simplify the Satisfaction interface

This replaces the custom `ProviderSource` type with a `Map<Desire,Provider<?>>`, to reduce unneeded custom types and make the satisfaction interface more straightforward (less implied inversion of control).

It also drops the wildcard from `Satisfaction.getDependencies()`; it wasn't gaining us much, and wildcards in method return types place a greater syntactic burden on their callers.