Partly modernize swap code
Swap groups are now handled as a fixed-size set of required groups and a variable-sized set of ion (swap) groups.
This code change is complicated by the way that a LocalAtomSet does not have a default constructor.
Refs #4169 (closed)