Add the notion of fresh instances to query and since

Summary:
Consider the following sequence of events:
- Watchman is tracking a file F
- A client queries for the current status, gets back F
- F gets deleted
- The watchman process gets restarted
- A client queries for the current status

Since F never existed at any point after watchman was restarted, the client won't ever get to know that F was missing. This is a problem.

To fix this, add the notion of fresh instances to watchman. For a relative clock value, a fresh instance is whenever the clock value indicates that it was returned from a different watchman. For a named cursor, a fresh instance is whenever the cursor is seen
for the first time.

Every query and since now returns a boolean called "is_fresh_instance". Whenever this is set to true, the result set contains all files (that match the predicate if specified) and that exist. Non-existent files are not returned.

In addition, for advanced users, an input argument called "empty_on_fresh_instance" is available. If this is set, then for fresh instances watchman will return an empty list instead.

Test Plan: `arc unit --everything`

Reviewers: wez

Reviewed By: wez

Differential Revision: https://phabricator.fb.com/D865561

Task ID: 2396485

--HG--
extra : rebase_source : 662da2732aee395494a3ff8090bc52f4f60f5356
extra : amend_source : 6060316cbc092ae7cebec67fb627cfbb1f8ba942