factory: support multi injection

allow to inject Iterable/Set/List/ImmutableList/ImmutableSet of components
refactor: remove machines defined manually which were used solely for multi injection

Now that we have multi injection, we can get rid of some manually defined machines.