Unbreak tests for the new run_context param.
Fix the de-duplication code on dialect instances to actually work.
New hook to allow dialects to have per-run cleanups.

This is important for any dialect that allocates stuff during the compile but can't dispose of it until the converge finishes (ex. callbacks).