Modernize LoKiCore
- remove redundant explicit destructors
- replace some 'virtual' qualifiers with 'override' qualifiers
- add 'final' qualifiers
- if possible replace constructors with inheriting base class constructors
- use forwarding constructors to reduce the number of code paths
- prefer =default for copy/move c'tor over explicit equivalent implementation
- tweak move assignment / move construction
- do not explicitly invoke default c'tor of base classes
- add {} to explicitly call c'tor when instantiating (const) objects
- prefer std::unique_ptr over raw pointer + explicit delete
- use 'auto' where appropriate
- implement Min,Max,AbsMin,AbsMax as special cases of Extremum
- implement {Min,Max,AbsMin,AbsMax}Element as special case of ExtremeElement
- implement And,Or,Less,Equal,LessOrEqual,NotEqual as special cases of BinaryOp
- implement Plus,Minus,Divide,Multiply as special cases of Combination
- implement Union,NoEmptyUnion,Difference,Intersection,SymDifference as special cases of ComposeFunctions
- prefer STL algorithms over raw loops
- prefer emplace_back
- add constexpr when appropriate
- remove deprecated std::{unary,binary}_function