A low-level, experimental interface to incremental. This is useful when you need more control over the dependency graph, for performance reasons. It comes at the cost that it's much harder to use right. Specifically, here is what you can do with an expert node:

- learn when any child changes, so the expert node can update itself incrementally, rather than having to look at the value of all its children.

- incrementally update its set of parents.

- select which parents should fire.

If you use this interface, you are most definitely advised to test carefully, and in particular you should try it out using `incremental_debug_kernel` or `incremental_debug`, which is going to check most pre-conditions.

`module Dependency : sig ... end`
`module Node : sig ... end`