Cache file stats to avoid IDB lookups

- Adds |fs.fileStats| that maps paths to their file stat object
- Adds |size| to the file stat object so that |fs.size| can use the cache
- Caches a stat object in |fs.open| to avoid subsequent stat lookups