Watchman now watches generated targets. Rebuild an output if it becomes dirty.

Summary:
Every output target is now watched by watchman. When watchman triggers it, we
stat it and compare its timestamp with the timestamp of the rule that builds it.
The timestamp of the rule is the time when the rule was last built. If the
timestamp of the output is lesser than the timestapm of the rule, it means the
modification was performed before the rule completed, and we do not mark it
diryt.

Thanks to this mechanism, falcon now rebuilds any genaretd target that becomes
dirty.

I added two tests: TestOutputDirty and TestOutputMissing.

Test Plan: ./test/run-tests -t TestOutputDirty TestOutputMissing

Reviewers: NicolasDP

Reviewed By: NicolasDP

Maniphest Tasks: T30

Differential Revision: http://91.121.199.76/D48