Implement tentative loads cooperation with DSE/DIE and selective specialisation:

* Instructions that will be checked are not dead (the inst might go away, but its operands will be needed for the check)
* Similarly, stores that feed checked loads are not dead
* In order to ensure that store after locking op -> no need to check the load, ensure that loop exit PHIs and function return values, where the loop/function is disabled and contains a locking op, are themselves checked.
* On a similar note, don't take instructions in disabled context as an excuse not to repeat a check -- they will not be checked, and so we must.

Somewhat unrelatedly: take path conditions into account when deciding whether load checks are redundant.