Add result_of::{copy,move}, close #5886

Thanks to: Jamboree
fusion::swap should be inline
result_of::{copy,move,swap} are now SFINAE-friendly