faster, more efficient uniqueness validation

I noticed that the uniqueness validations were returning all results to Ruby and evaluating there. This takes advantage of `exists?` and puts all the heavy lifting on the database. It will make the whole process much faster.