Re #6572. Consolidate code between AppendSpectra & ConjoinWorkspaces

by creating a common base class.
This should satisfy cpd, though not me yet.