defineSlot now returns the slot created.
notSame now applies to indefinites too.
Treat all ::Variables as variables in unification, return nil for Indefinite attempting to subsume an Arbitrary.
Printer is noe thread safe. Uses thread-local bindings to track vars already printed.