Watcher fix

Replaced file-watching method with third-party lib: "Gaze"

Why was old method bad?

* It caused an infinite loop (infinite re-builds) because it watched the gnerated directory which it also updated on every build.
* Was not cross platform.
* Did not hook into OS-Level file-watching techniques.

Why is new method (Gaze) good?

* Uses OS-Level file-watching techniques.
* Only fires on real file changes.
* Events are de-bounced.
* Ignores things in generated/
* Cross platform.