Fix a stupid crash in reorder_for_avail.
Use the unordered_bbdd structure to cache whether a given expression
is actually evaluatable.  This allows some useful additional sanity
checking.
Simplify the expression slices a bit earlier, and avoid trying to
enforce any which require a cyclic HB graph.
Extra sanity checking: make sure that expressionEvalMapT's constructor
does actually visit all the nodes it's supposed to.
BDDs with a completely unconstrained ordering turn out to be quite
tricky to work with.  Rework expressionEvalMapT so that it doesn't
need to, and instead works with BDDs with a well-defined order which
is just different from the usual one.
Tweak debugging in expressionEvalMapT's constructor.
specialiseIRExpr() gets called while the state machine evaluation is
only part complete, and so it won't necessarily be able to see the
value of all variables.  That's fine, because of the non-causal
semantics (provided the variables get set later on).  Make sure we
don't prune the tree too early.
Simplify the symbolic executer a bit now that specialiseIRExpr() never
returns NULL.