printable.h: Documented design decision in Printable::clone.
ast.cpp: Implement virtual method clone() for classes in ast.h

The initialization syntax
    Type * ptr = new Type{ attributes }
is only valid for aggregate types, and classes with base classes
or virtual functions are explicitly disallowed as aggregates.
Since this initialization calls the respective constructor if
one was found, writing a forwarding constructor in ast.h allow
this syntax.

ast.h: Write forwarding constructors.
operator.h: OperatorOverload should be abstract.
operator.cpp: implement clone and print_to of classes in operator.h

All the classes had to gain constructors due to the same problem
discussed in the message to the commit d5cb611.