Add optionalwatch cookie support (#7379)
### Description
We have two types of APIs in the daemon, one is request-based, and one
is 'watch-based'. In the first case, a request comes in from the system
and we want to make sure that the answer that is given has observed at
least the filesystem events up to the point of the request. In the
second case, there is constantly updating state (ie, in response to
filesystem changes) that also needs to be validated against some cookie
index.
CookiedOptionalWatch provides an API around some of the more complex
data dependencies, making sure that complicated derived state is able to
easily respect cookies when their values are requested. A cookie watch
can have siblings from the same source, or children, which effectively
composes two cookie watches. This is necessary because the file watching
will be processed by multiple actors whose individual processing queues
must all be up-to-date for the derived state to be considered up to
date.
### Testing Instructions
Existing tests suffice