Filter unusable implementations

Also, improved solver API by separating the feed_provider from the
impl_provider. This makes it easier to unit-test the impl_provider
and simplifies the public solver API.