Leverage the work done by yarn, rather than reimplementing from scratch.
This means the fake fs is now reading from a zip file in the binary.
A few methods need custom implementations as the fake fs is not
writable. These were copied and adjusted from the yarn ZipOpenFS.