Case sensitive validate_uniqueness_of validation

Hi all,

After some days of feedback and working with lifo, the patch for
fixing case sensitivity in validate_uniqueness_of as get a lot better.
I sent an email to the list, before but the patch has gone through
some refactoring and new review may be needed.

The initial problem was the bug that :case_sensitive => true, wasn't
working at all, and this *was* the default. People may already be
using this functionality and having wrong results.

Since MySQL/Postgresql aren't case sensitive (sqlite is) the only way
to achieve this is doing a ruby comparison, so instead doing a
"find(:first)" this version does a select_all (with
construct_finder_sql), so that in case ruby case sensitive comparison
is required, the comparison is done with a hash and not objects.

The default was also changed from true to false, "Because, people
must have built their apps thinking case sensitivity is off ( as it
didn't work before )" as Pratik said.

Ticket: http://dev.rubyonrails.org/ticket/11366

Cheers