Refactor salt.utils.filecopy() out of salt.utils

Done to ease the use of salt.modules.selinux here. Added better checking
for selinux to fix #16999
Merge pull request #17009 from cachedout/issue_16999

Refactor salt.utils.filecopy() out of salt.utils