Add copy constructors / assignment operators for the DataTree class hierarchy
In particular, it is necessary to turn back DataTree::AddVariable() into a non-virtual method, because it is called from DataTree's constructor. Enforcing the absence of leads/lags is now done using a new boolean DataTree::is_static. Take advantage of the new copy constructor for handling PlannerObjectiveStatement more elegantly. Unfortunately it is not possible to implement *move* constructor / assigment operators, because the reference ExprNode::datatree is not mutable.