Simplify the Satisfactin 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).