CopyOrMoveConstructor

Autogenerated copy constructor was conflicting with already existing
copy constructors with different semantics. A copy or move constructor
was thus created which takes a boolean argument move. If move is true,
no deep copy is performed, if move is false, deep copy is performed.