State machine side-effects are now immutable, so there's no point in
ever duplicating them.
The various static analysis bits turn out to be unhelpful in most
cases.  Make them optional, and default them to off.
Micro-optimise definitelyEqual and definitelyNotEqual a bit by taking
advantage when the arguments happen to be pointer-equal.
Get rid of smr_unreached a bit sooner, so as to open up other
optimisation opportunities.
Get rid of some redundant calls to optimiseStateMachine() and
duplicateStateMachine().
Pull calculation of atomic surival constraint up a level.
Most of the time, R atomic is the same for every store machine for a
given probe machine.  Take advantage of that fact.
Use the R atomic constraint to try to simplify the probe machine down
a little bit before deriving W atomic.
Use the R atomic and W atomic rules to constrain the construction of
the cross-product machine befoe symbolically executing it.