added Corestar_std.pp_bool
memoise Syntax.is_pure

This makes coreStar faster
add Smt.dump_solver

This can be useful when debugging
memoise Smt.check_sat instead of Prover.smt_is_valid

The caching of Prover.smt_is_valid did not take context into account
(pushed assertions) which is an issue for doing more interesting things
with Z3 in Prover.

The caching in Smt takes the context into account and as a result is
slower than the original caching in Prover.smt_is_valid.
use Z3 for congruence closure in Prover

For now only used in Prover.find_matches.

This renders Prover.inline_pvars_rule obsolete and also gives better
matching.
more TODOs