[Filesystem] Throw Exception on copying from an unreadable file or to an unwritable file

| Q  | A |
| ------------- | ------------- |
| Bug fix?  | No  |
| New feature?  | No  |
| BC breaks? | No |
| Deprecations? | No |
| Tests pass? | Yes |
| Fixed tickets | |
| License | MIT |

In certain circumstances (overwrite set to true, target file not writable), Filesystem->copy() would return success even though the file was not successfully copied. Unit tests included.