annotate clause type at abstraction time

annotate clauses with :expr, :rule, and :data when clauses are preprocessed at abstraction time. This eliminates the conditional checking that is duplicated at clause evaluation time

update tests for `abstract-clause`

found bug in `is-rule-invocation?` logic that labeled data clauses starting with a db var as a rule
compile expression clauses into functions at abstraction time

Avoid the cost of `eval` on each invocation of an expression clause. Instead, compile an expression clause into a function that takes an evaluation context.