Fixed `ActiveSupport::TimeWithZone#-` so precision is not unnecessarily lost

When working with objects with a nanosecond component, the `-` method may
unnecessarily cause loss of precision.

`ActiveSupport::TimeWithZone#-` should return the same result as if we were
using `Time#-`:

    Time.now.end_of_day - Time.now.beginning_of_day #=> 86399.999999999

Before:

    Time.zone.now.end_of_day.nsec #=> 999999999
    Time.zone.now.end_of_day - Time.zone.now.beginning_of_day #=> 86400.0

After:

    Time.zone.now.end_of_day - Time.zone.now.beginning_of_day
    #=> 86399.999999999
Test the serialized types of virtual columns in XML

The previous tests were passing, because nothing ever looked at the
generated XML. What was previously being generated was
`<firstname type="NilClass">...`, which is not consistent with all other
cases where there is not a known type.
Refactor XML serializer to not depend on `serialized_attributes`
Fix regression on eager loading association based on SQL query rather
than existing column.

Fixes #15480.
Add default_i18n_subject to the guides

[ci skip]
Pluralize params
push splitting "to" up the callstack
Change wording of explanation about precision & scale of decimal numbers [ci skip]
Merge pull request #15482 from laurocaetano/fix-regression-for-eager-load

Fix regression on eager loading association based on SQL query rather than existing column.

Conflicts:
	activerecord/CHANGELOG.md
Merge pull request #15500 from prathamesh-sonpatki/change-wording-of-explanation-about-precision-and-scale-of-decimal-numbers

Change wording of explanation about precision & scale of decimal numbers [ci skip]
Use null column for association key types
Collapse PG default extractoin of most types to single regex

For any type that is represented as a string and then type cast, we do
not need separate regular expressions for the various types. No function
will match this regex. User defined types *should* match this, so that
the type object can decide what to do with the value.
Merge pull request #15463 from geopet/refactor_xml_compute_type

Refactor XML serializer to not depend on `serialized_attributes`
Correct result, previously showing wrong result
Merge pull request #15505 from akshay-vishnoi/doc_changes

Correct result, previously showing wrong result
Merge pull request #15495 from maurogeorge/action-mailer-subject-guides

Add default_i18n_subject to the guides
Merge pull request #15504 from sgrif/sg-postgres-defaults

Collapse PG default extractoin of most types to single regex
For our build, stick with mail 2.5.x for now

2.6 currently has many warnings, which are failing the Travis build.
Merge branch 'master' of github.com:rails/rails

* 'master' of github.com:rails/rails:
  For our build, stick with mail 2.5.x for now
  Correct result, previously showing wrong result
  Collapse PG default extractoin of most types to single regex
  Change wording of explanation about precision & scale of decimal numbers [ci skip]
  Cleaned up duplicated CHANGELOG entry [ci skip]
  reuse available belongs_to? method
  Convert StrongParameters cache to a hash. This fixes an unbounded memory leak demonstrated on @tenderlove's latest blog post:
  Partially revert deprecation of *_filter
  Pluralize params
  Add default_i18n_subject to the guides
  Fix regression on eager loading association based on SQL query rather than existing column.
  Relax mail gem constraint from ~> 2.5.4 to ~> 2.5, >= 2.5.4
  Keep column defaults in type cast form
  Return a null column when no column exists for an attribute
  Refactor XML serializer to not depend on `serialized_attributes`
  Test the serialized types of virtual columns in XML
  implement ActiveRecord::Base#pretty_print + changelog
  Remove duplicated HashWithIndifferentAccess#with_indifferent_access.
Merge pull request #15502 from sgrif/sg-use-null-column

Use null column for association key types