This removes a lot of unnecessary code that is generated by the compiler automatically.
In very few cases, a defaulted destructor in a .cc file is still necessary, because of forward declarations in the header.
I removed some defaulted virtual destructors, because they are not necessary, when the parent class has a virtual destructor already.
Defaulted constructors are only necessary when there is another constructor, but the class should still be default constructible.