BAT implementation using progression.

Some code still needs to be adjusted not to depend on situation terms.
One trick that often works is replacing the pattern matching for
  f (Do Pattern _) = ...
with
  f s = case sit2list s of Pattern -> ...
which by the way shouldn't be that much slower.