Fix .update_all and .delete_all when using a condition on a joined table
in a default_scope.

`Model.joins(...).where(condition_on_joined_table).update_all` /
`delete_all` worked, but the same operation implemented with a
default_scope generated a SQL error because ActiveRecord ignored the
join but implemented the where condition anyways.
`CollectionAssociation#empty?` respects newly builded records
Merge pull request #8912 from senny/8879_association_empty_method

`CollectionAssociation#empty?` respects newly builded records
CollectionProxy should be default scoped

Fixes #8795
Undeprecate the :extend option

Suggested by @dhh.

It doesn't affect the generated SQL, so seems reasonable to continue to
allow it as an association option.
User Rails 4 find_by
Merge pull request #8989 from robertomiranda/use-rails-4-find-by

Replace deprecated find_by_* with find_by
Revert "Merge pull request #8989 from robertomiranda/use-rails-4-find-by"

This reverts commit 637a7d9d357a0f3f725b0548282ca8c5e7d4af4a, reversing
changes made to 5937bd02dee112646469848d7fe8a8bfcef5b4c1.
MiniTest already defines a ParallelEach class

This may or may not fix the intermittent railties failures we've been
seeing on the CI with Ruby 2.0. We'll see.
The test setup is not threadsafe. Wrap in a mutex.
Merge pull request #8994 from Springest/fix_default_scope_update_all_delete_all

Fix .update_all and .delete_all when using a condition on a joined table in a default_scope