Js patches

adding support for js-patches
passes a SourceModulePatch to every source module, if a patch is available the getReader will return the reader for the patch file, otherwise it returns an empty string reader. This way every source module doesnt have to check whether or not it should add the reader.

one limitation: we only read in .js files as a patch. For future work we might want to support other file extensions based on the file extension of the source module it's patching.