Rewrite FileUtills::CopyFile()

This commit rewrites FileUtills::CopyFile().

The purpose of the rewrite is to make it so that it's only concerned with the copying of a file.
(This way it can be better intergrated with FileUtills::CopyPath() once it's finished.)

The rewrite also changes the function prototype and it's return codes. (More info is now returned when an error occurs.)

One down side is that the rewrite makes the function no longer capiable of determining why a file open failed. (I.e It can't tell if it was a permissions error, non-existant file error, etc.) This will be readded after a function is created for this purpose. (I.e a function to determine the OS error code meaning.)