Fix the `:primary_key` option for `has_many` associations.

When removing records from a `has_many` association it used
the `primary_key` defined on the association.

Our test suite didn't fail because on all occurences of `:primary_key`,
the specified column was available in both tables. This prevented the
code from raising an exception but it still behaved badly.

I added a test-case to prevent regressions that failed with:

```
  1) Error:
HasManyAssociationsTest#test_has_many_assignment_with_custom_primary_key:
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: essays.first_name: UPDATE "essays" SET "writer_id" = NULL WHERE "essays"."writer_id" = ? AND "essays"."first_name" IS NULL
```
deprecate Validator#setup (to get rid of a respond_to call). validators do their setup in their constructor now.
Merge branch 'deprecate-validator-setup'

Closes #10716
Merge pull request #10713 from senny/10693_fix_primary_key_option_on_has_many

Fix the `:primary_key` option for `has_many` associations.