std::num cleanups, add Clone and DeepClone constraints to num::Primitive