new unifier interface

All the simple unifier fns now take either one or two arguments. In
the single arity case they take a seq of terms to unify. In the two
arity case they take an options map and the seq of terms.

Currenly options can contain a :when entry which is a map of vars to
constraints which should be applied to them.