Enforce unique container in all phases

Previously, the buildpack only enforced a single unique container in
the detect phase.  This meant that any time a buildpack was explicitly
specified (and detect skipped) it was possible to end up with an
ambiguous container choice.

This change ensures that the same logic for guaranteeing a unique
container is used in all phases.

[#70085176]
Merge 70085176-enforce-unique to master

[Completes #70085176]
Merge remote-tracking branch 'upstream/master'