faster distinct: maintain seen items in a set

* hy/core/language.hy: maintain the seen items in a set instead of a
  list in `distinct`. This is much faster for lookups.

As a test calling 
```clj
(profile/cpu (list (distinct (* (list (range 1000)) 1000))))
```

in my PC takes about 8.7 s in the list version. The set version takes about 0.068 s