Refs #10282. Added conversion function between unit cell and string

For using UnitCell in PropertyWithValue, it would be necessary to change the stream operator of UnitCell,
because that is only used for printing at the moment and the precision is limited to 1e-3, which is not enough
for cases like powder diffraction (for example at POLDI, where lattice parameters are determined with precision
better than 1e-4).

Instead of modifying the interface of UnitCell I chose to add explicit string conversion functions. It should be
straightforward to change later on.
Refs #10282. Changed IScatterer interface, added factory

IScatterer now inherits from PropertyManager. There's now also a factory for consistent creation of scatterers.