fix inverse_of association in block of new child

This fixes inconsistency when building children of association
which has inverse_of set properly.

When creating new association object with a block:

    parent.association.build do |child|
      child.parent.equal?(parent) # false
    end

So the block the `child.parent` did not point to the same object.
But when the object is created it points to same instance:

    child = parent.association.build
    child.parent.equal?(parent) # true
Refactor CollectionProxy#scope to avoid calling #extend.
failing test for #9869
Fix scope chaining + STI

See #9869 and #9929.

The problem arises from the following example:

    class Project < ActiveRecord::Base
      scope :completed, -> { where completed: true }
    end

    class MajorProject < Project
    end

When calling:

    MajorProject.where(tasks_count: 10).completed

This expands to:

    MajorProject.where(tasks_count: 10).scoping {
      MajorProject.completed
    }

However the lambda for the `completed` scope is defined on Project. This
means that when it is called, `self` is Project rather than
MajorProject. So it expands to:

    MajorProject.where(tasks_count: 10).scoping {
      Project.where(completed: true)
    }

Since the scoping was applied on MajorProject, and not Project, this
fails to apply the tasks_count condition.

The solution is to make scoping apply across STI classes. I am slightly
concerned about the possible side-effects of this, but no tests fail and
it seems ok. I guess we'll see.
Merge pull request #10058 from jamesgolick/master

Avoid calling define_method in CollectionProxy#scope
Merge pull request #9996 from mikz/master

Association with inverse_of does not set the parent in association building block
Fix indent and remove extra white spaces
Move changelog to the top [ci skip]