Support delete unused in scheduler
Supports delete unused in the pass manager.
This actually makes delete unused its own expression form rather than a pass since that avoids having to pass additional (otherwise unnecessary) state into the run_pass
function.