Sema: Rework binding set generation number tracking
Instead of a per-binding set generation number, use a globally
incrementing "clock". This allows us to take the maximum generation
number of a collection of binding sets, and compare it against the
previous maximum to detect if any of those binding sets changed.