Move source file upload tests out of FileServiceTest

Tests from FileServiceTest are copied with minimal modification.
A few tests are added to FileServiceTest after moving the others - these are a lot easier to see by viewing the file on its own, otherwise they're spread through the diff and not really readable.