Factor out a MockFileSystemModel from the MockFileSystemImpl to make it possible to test external change events (as distinct from internal change events fired from within the FileSystem); remove some redundant dualWrite unit tests that were written with the assumption that the impl itself was firing all change events