Large-scale code cleanup. Also adds a license to the top of all files that were missing it.
As C++11 is the adopted standard, trivial constructors are not needed, compiler can generate it for us.