Combine metadata watchsets lazily

This makes it easy to replace sub-WatchSets when we write a file