switch to csv with lots of training problems
base semantic dict on terms instead of z3 terms

(to simplify logic and potentially serialization;
construction of z3 terms on the fly is reasonably cheap)
make semantic dict interface more dict-like

As a side effect, introduce caching of the last key.