std: Implement Clone and DeepClone for extern "Rust" fn

Implement Clone and DeepClone for functions with 0 to 8 arguments.
auto merge of #8109 : blake2-ppc/rust/extern-fn-clone, r=thestinger

Implement Clone and DeepClone for functions with 0 to 8 arguments.  `extern fn()` is implicitly copyable so it's simple, except there is no way to implement it generically over #n function arguments.

Allows deriving of Clone on structs containing `extern "Rust" fn`.