Adds a facility for code to observe changes to the file-system

Code can now specify callbacks to `Module.trackingDelegate[callback name]` to receive different filesystem events.
This is useful for applications needing to persist changes to the in-memory filesystem.

Events that can be stacked go by these callback names.

- `didDeleteFile`
- `didOpenFile`
- `didCloseFile`
- `didWriteToFile`

Each callback function is passed the path as the first parameter. `didOpenFile` is also passed read/write flags as the second parameter. These are specified in `FS.tracking.openFlags.(READ/WRITE)`