Add support for identifying conventional cell from surfaces
Each cluster (`matid.classification.structureclusterer.Cluster`) given by `StructureClusterer` also contains a list of the regions it has detected (stored in `cluster.regions`). This contains a list of `LinkedUnitCollections` (`matid.core.linkedunits.LinkedUnitCollection`), which each contain the unit cell from which the region is built from (stored in `LinkedUnitCollection.cell`). We want to analyze this cell and get the conventional cell that corresponds to it. The [conventional cell](https://en.wikipedia.org/wiki/Unit_cell#Conventional_cell) then contains e.g. the symmetry information + can be used to construct the material_id that links the surface into the bulk material from which it is constructed from.
The following steps are needed to add this information into the topology:
- [x] Extract the biggest region from each cluster that corresponds to a Surface, and get the cell for that region. This will be an ASE.Atoms object that we can analyze further.
- [x] Each surface within the topology should get a child subsystem for the conventional cell]. Create a new `nomad.datamodel.results.System` for the conventional system, add it to the topology list and connect the surface to it (surface=parent, conventional cell=child).
- [x] Use `matid.symmetry.symmetryanalyzer.SymmetryAnalyzer` to get the symmetry information for the conventional cell. You can see an example of this in `nomad/normalizing/system.py`. Fill the symmetry subsection (results.material.topology.symmetry) of the `System` corresponding to the conventional cell with this information.
- [x] Refactor code and cleanup
- [x] Add material ID for conventional system (see example in normalizing/material.py -> material_id_bulk)
- [x] Add the possibility of storing a structure directly into topology. This would be required in order to show the conventional cell that is extracted from e.g. a surface (_Lauri_)
- [x] Make material_id into a `<MaterialLink>` (_Lauri_)
- [ ] Add GUI tests for <MaterialCardTopology> (_Lauri_)
- [x] If structural_type cannot be determined, it should be set as `unavailable`. in the GUI. (_Lauri_)
- [x] Extend the unit tests from issue #855 to also test that the correct symmetry information is found.
issue