Modify ContainerMatcher contract

- Use `Iterable` containers instead of `ContainerRepository` in ContainerMatcher
- Move the logic to filter the containers out of `DefaultContainerMatcher` and have it in
the `ContainerListener`