Protect copy constructors in non-leaf and leaf classes, to avoid the...

Protect copy constructors in non-leaf and leaf classes, to avoid the implicitly generated ones by the compiler that could cause slicing. In Cloneable, the assignment operator was deleted to disable issues with implicitly generated assingment operators in derived classes to prevent slicing. (resolves #31)
10 jobs for master in 7 minutes and 20 seconds (queued for 3 seconds)