rules have now a flag and a priority

flags \in { no_backtrack, abduct, inconsistency, instantiation }
are properties of the rule that indicate when it should/shouldn't be
applied.

rules are sorted wrt their priorities before applying (useful before we
start backtracking).

I could not fully reproduce the old rulesets behaviours, namely, we had:

builtin_rules =
  [ abduce_instance_rule; smt_pure_rule; smt_disprove; spatial_id_rule ]

builtin_noinst =
  [ id_rule; smt_pure_rule; smt_disprove; spatial_id_rule ]

but now the equivalent (there's only builtin_rules now) would be:

builtin_rules =
  [ id_rule; abduce_instance_rule; smt_pure_rule; smt_disprove; spatial_id_rule ]

builtin_noinst =
  [ id_rule; smt_pure_rule; smt_disprove; spatial_id_rule ]

We're still a bit faster on test11 than before this commit:

make test11.test  15.57s user 0.55s system 99% cpu 16.138 total // before
make test11.test  15.33s user 0.44s system 99% cpu 15.778 total // after

A lot of tests are still broken from the parse commit (I think)