Improved FileChangeObserver

- You can now decide which events to reach to added/removed/changed
- FileChangeObserver.apply returns an Observing instance that can be
  used to stop the listener when appropriate.