When a message is shared, share its transitive dependencies
Like other recursive operations on the dependency graph, this is not done in a single transaction to prevent an attacker from creating arbitrary large transactions.
So at startup, the ValidationManager
finds and resumes any
unfinished operations, by looking for unshared messages with shared
dependents.
Closes #589 (closed)