Proper usage of smart pointers

  1. Remove the implicit ownership transfer

    • Sim/Scan/BeamScan
    BeamScan::BeamScan(Scale* axis): m_axis(axis)
    • Sim/Scan/PhysicalScan -> BeamScan
  2. Remove unneeded usage of std::shared_ptr

    • Sim/Simulation/ScatteringSimulation.h: L72:
    std::shared_ptr<Beam> m_beam;
    • Device/Beam/Beam.h: L100:
    std::shared_ptr<IFootprint> m_footprint;
    • Device/Detector/OffspecDetector.h: L77:
    std::shared_ptr<Scale> m_axes[2];
  3. Check CloneableVector usage.