[topo] Refactor `ExpandCells` to not error on valid aliases
[topo] Refactor `ExpandCells` to not error on valid aliases

A couple other changes here:
- Store the output cells in a set to dedupe the final slice. This covers
the case where a caller passes `"alias,cell1"` where `cell1` is in the
cell list for `alias`. Without a set, it would appear twice in the final
result.
- Add an inner function to correct `defer` semantics on the cancel
funcs. Defering within the scope of a for loop is generally not what we
want, since all of the deferred functions will pile up until the total
function is done.

Fixes #8290.

Signed-off-by: Andrew Mason <8a240ff75aa1467ba5eba4db0c8200b61262547e@slack-corp.com>

mahak/vitess,mahak/vitess,tinyspeck/vitess,tinyspeck/vitess,mahak/vitess,mahak/vitess,tinyspeck/vitess,tinyspeck/vitess,tinyspeck/vitess,vitessio/vitess,vitessio/vitess,mahak/vitess,vitessio/vitess,vitessio/vitess,tinyspeck/vitess,mahak/vitess,vitessio/vitess,vitessio/vitess,vitessio/vitess,mahak/vitess,vitessio/vitess,mahak/vitess,tinyspeck/vitess