Change some conditionals involving string literals to use strcmp instead.

The current usage throws some compiler warnings.
Add classes
First chunk of Wall fixes.
This patch adds virtual destructors where needed, moves all initialization lists of constructors in the correct order, and removes lots of dead assigment warnings appearing in clang (+ clang static analyzer). Still splitting up my large patches into smaller chunks, not containing any "critical" changes, that can potentially affect the behaviour - as discussed with Vitaly.

build_all still works fine.
Rubber-stamped by V. Choutko.
TDVR DataMC field was not copied in the copy constructor, fix that.
Merge branch 'master' into mkrafczy/ubuntu_fix