This is implemented in the lib.structure.internal.coordinates.assemble_coord_array() function for
assembling atomic coordinates. It will also automatically be used by many of the structure user
functions which operate on multiple structures.
The atomic coordinate assembly logic has been completely changed. Instead of grouping atomic
information by the molecule, it is now grouped per residue. This allows the residue based sequence
alignments to find matching coordinate information.
The assemble_coord_array() function will also handle the algorithm argument set to None and assume
that the residue sequences are identical between the structures, but this should be avoided.
A new function, common_residues() has been created as a work-around for not having a multiple
sequence alignment implementation. It will take the pairwise sequence alignment information and
construct a special data structure specifying which residues are present in all structures.
The logic for skipping missing atoms remains in place, but it now operates on the residue rather
than molecule level and simply uses the atom name rather than atom ID to identify common atoms.