Modernize DetDesc
- use static_cast instead of C-style cast
- return std::unique_ptr from new_copy to clarify ownership
- prefer override
- use private inheritance in ParamList to hide extraneous interface methods
- prefer pass-by-const-ref over pass-by-const-pointer when passing a nullptr resuls in a SEGV
- prefer auto
- prefer range-based loops
- remove obsolete SVN keywords
- prefer 'find' over 'count' to check for existence