Simplify the API (breaking changes)

The API can be simplified to the following:

 * `mock(config)` - Back the real `fs` module with a mock file system.
 * `mock.restore()` - Restore the `fs` module so it is backed by the real file system.
 * `mock.file(properties)` - Create mock files with additional properties.
 * `mock.directory(properties)` - Create mock directories with additional properties.
 * `mock.symlink(properties)` - Create mock symlinks with additional properties.
 * `mock.fs(config)` - Return a `fs`-like set of functions backed by a mock file system (without modifying the real `fs` module).