assign: generic ast walker and walk_msg callback

for now only:
  detect msg in rhs of assign to check if compile-time matching
  can be done. else defer to runtime matching, resp. sequential assignment.
assign: add quoted msg test, see returned bindings
assign: fix walker, add equal cmp with lhs value (WIP)

replace 1 = x with 1 equal x. not constant folding yet for such binops.
need to add a EQUAL op, which is better than CMP: for all objects check cmp == 0.
assign: add EQUAL op, compare any value, not just numbers

also added potion_table_equal, potion_tuple_equal, potion_any_equal,
potion_table_cmp

add assign testcases