Factor out map `IUnifyWithTerms` implementation to `unify-with-map*` function.

This makes it easier for consumers to extend map-like unification to their own records without copy/pasting.
remove custom SubstValue printing, makes debugging painful
Merge branch 'master' of github.com:clojure/core.logic
Merge branch 'master' into entanglement
remove redundant test
tests checking that entanglement works even with aliased vars