minor cleanup around monadic protocols for nil
Fix copy-term.

- build-term for vars seemed out-of-date,
- build-term needs to be implemented for all collections (including
  vectors), not just seq.
remove stray field access
minor audit: swap-noms shouldn't overwrite metadata on noms
Minor refactoring of nom/hash (no semantics change).
Reify constraints without duplicates.
The ::nom and entanglement information is redundant.
Merge branch 'master' into eset-instead-of-nom-dom
no ::nom dom ==> no need for -merge-doms
a few little cleanups
whitespace changes
update project.clj
Merge branch 'master' of github.com:clojure/core.logic
for consistency, fix pretty printing of ties
LOGIC-119: quick fix to ensure disunify on maps can deal with non-map other.
first pass at new table cache type. nondeterminism and general bad
behavior in tabling results from the `(first ansv*)` line in the
implementation of `reuse` - there's no guarantee what that will return
for sets. Ooops.
LOGIC-112: Incorrect results with tabled resolution

The bug was introduced when we switched the answer cache to sets. In
`reuse` we were calling `first` on the set which of course won't
work.

We not have an `AnswerCache` type. This holds both the list of answers
for determining the fixpoint as well as the answers as a set for
quickly determining whether we've already cached an answer.

The additionally memory overhead does make it desirable to have more
sharing of tabled information between answer caches.
Merge branch 'master' of github.com:clojure/core.logic
optimization
include 112 test case