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.
Add block support for the  helper
Model generator USAGE doc improved

 * Added information about syntax for precision/scale of decimals
 * Removed incorrect information about being able to set `default`
 * Added more examples of usage
Use inspect when writing the foreign key from the reflection

If we don't use inspect inside the class_eval block then the foreign key
is written without quotes causing us to fetch the foreign key value and
not the column name.
Merge pull request #10092 from amco/master

Model generator USAGE doc improvement
Merge pull request #10065 from spohlenz/mail_to_block

Add block support for the mail_to helper
Ensure mail_to helper does not modify the given html options hash
Refactor mail_to to not generate intermediate hashes when adding href

There's no need to use Hash#merge with a new hash just for setting the
href option to pass it through. Since we're always dealing with a new
html_options hash, we're free to just set the value instead.
Use the correct pk field from the reflected class to find the old record

The implementation was using the source class foreign key field instead
of the reflected primary key one to find the old record.

For instance, for this scenario

    class Bulb < ActiveRecord::Base
      belongs_to :car, :touch => true
    end

    class Car < ActiveRecord::Base
      has_many :bulbs
    end

the current implementation was trying to do this query:

    Car.where(car_id: X).first

where we should be doing this query:

    Car.where(id: X).first

This should hopefully fix the build.
Avoid an attempt to fetch old record when id was not present in touch callback
Sort modules in alphabetical order.
Improve `belongs_to touch: true` timestamp test

Round off time to a whole second value to compensate for databases
that don't support fractional timestamps. Also add a assertion to
check that the old record is touched when the association is cleared.
Merge pull request #10102 from xxxcaqui/master

Sort modules in active_record.rb
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]