RFC: Add Copy and DeepCopy trait and deriving modes

This prepares the source code for renaming `clone` -> `copy`.
Needs an snapshot to proceed.

I'm not sure if it's actually desirable at this point to make the change, but I think `copy` is a more fitting name than `clone`.
- `clone` might confuse people coming from, eg, java.
    - `clone` there is per default implemented as reference copy, and can be overriden for custom clone behavior.
 - The semantic of our `Clone` and `DeepClone` are more clear cut: `Clone` copies as shallow as possible, `DeepClone` as deep as possible. 
- Our `clone` is also frequently just a fast, low level copy, the name `clone` might imply something more heavy going on per default.
- It's shorter, always good for a frequently called function.