This wraps RhinoFile, NodeFile, or PhantomFile depending on which javascript environment is being used, and emulates a subset of the java.io.File API.
Emulates a subset of the java.io.FileWriter API required for scoverage to work.
This implementation of Source loads the whole file in memory, which is not really efficient, but it is not a problem for scoverage operations.