Modernize SimComponents
- prefer inherired constructors
- prefer inheritance of extends over virtual inheritance from T
- prefer standalone functions in anonymous namespace (i.e. with local linkage) over member functions where possible
- move definition of opaque classes out of header file
- prefer nullptr over NULL
- consolidate duplicate code into a function
- prefer range-based for loops
- prefer auto
- prefer STL algorithms over raw loops
- prefer std::unique_ptr over raw new/delete
- prefer direct member initialization
- prefer Gaudi::Property