A few assorted fixes and improvements.

- ordering of when to evaluate (. <c>) was again messed up: it has to
  happen after the arg is evaluated.
- some optimizations related to ordering of clauses.