backport runner fixes to 3-2-stable

Add a runner hook to Rails::Application and Rails::Engine that requires
ActiveRecord::Base to avoid circular constant loading when using observers.

This commit backports cc7dd66, c0ba0f0 and 8d01c61.
Fix javascript_include_tag when no js runtime is available

In a production environment where the assets have been precompiled, we
don't want an assets compile step to happen on the application server at
all. To ensure this, a js runtime may not be available on the app
servers. In this environment, pages using javascript_include_tag for
assets with non-standard or chained extensions were throwing 500 errors.
For instance, `javascript_include_tag('jquery.min')` would blow up.

Sprockets was attempting to build the assets being included during the
rewrite_extension step (responsible for appending a '.js' extension to
assets being included by the basename rather than a fully qualified
name). This was happening as a step to resolve #6310, which required
checking for the presence of an asset with a non-standard extension
before appending the extension.

We can check for the presence of an asset without invoking the asset
build step by using Sprockets' resolve method, which will search for the
base file without building it (and is the method that find_asset uses
internally to get the path to the asset before attempting to build it).

When rewriting the extension on an asset, these are the steps:
- If the source does not have an extension, assume that the default
  extension is desired and append it.
- If there is an extension and it doesn't match the default extension,
  check to see if a file with the precise name specified exists amongst
  the assets; if it is present, do not append the default extension.
  (This is the step that resolves #6310).
Fixes issue where duplicate assets can be required with sprockets.

- addresses the problem by calling flatten on asset array before calling uniq.
- adds note to CHANGELOG.
Merge pull request #8735 from jejacks0n/duplicate_asset_fix

Ensure assets aren't duplicated when using sprockets require.
Merge pull request #8756 from causes/js_include_tag_fix

Fix javascript_include_tag when no js runtime is available
Reorder AP changelog and remove duplicated entry [ci skip]

Duplicated entry added in 002dfba66490d289bac897d1ba886310a672e779.
Fix JSON params parsing regression for non-object JSON content.

Backports #8855.
Merge pull request #8888 from dylanahsmith/3-2-parse-non-object-json-params

3-2-stable: Fix JSON params parsing regression for non-object JSON content.
Revert "Merge pull request #7661 from ernie/build-join-records-on-unsaved-hmt"

This reverts commit ee439895759b38431ad025f3c234831f30dadcdb.

It would appear that #7661 had unintended consequences to the API. Until
we can sort those out, this should not be in 3.2.x, and wait for 4.0.0.
Merge pull request #8895 from ernie/revert-hmt-on-unsaved-in-3-2

Revert hm:t on unsaved collection for 3.2
Remove unnecessary caching of ParameterFilter
Merge pull request #8907 from rubys/master

Fix regression introduced in pull 8812
Fix DateTime comparison with DateTime::Infinity object
Test to allow Range including DateTime and DateTime::Infinity

Closes #8587
Merge pull request #8927 from dkubb/issue-8178

Fix DateTime comparison with DateTime::Infinity object
Make tests for the presence of MiniTest consistent.

There is an inconsistency between the conditional logic in
the definition of ActiveSupport::TestCase and the conditional logic in
ActiveSupport::Testing::SetupAndTeardown [1].

In some circumstances, it's possible for MiniTest to be defined, but
for ActiveSupport::TestCase *not* to have MiniTest::Unit::TestCase or
MiniTest::Assertions in its ancestor chain. e.g. in Ruby 1.8 with the
minitest gem included in the bundle. In this case, the
Test::Unit/MiniTest shim/wrapper is not present and so
Test::Unit::TestCase (and therefore ActiveSupport::TestCase) is
completely independent of MiniTest::Unit::TestCase.

The conditional logic in the definition of ActiveSupport::TestCase does
not take this scenario into account, whereas the logic in
ActiveSupport::Testing::SetupAndTeardown does take it into account.

The changes in this commit are an alternative to the change in [2] which
was reverted in [3].

Similar conditional logic exists in ActiveSupport::Testing::Isolation
[4], ActiveSupport::Testing::Pending [5],
ActiveSupport::Testing::Performance [6], and in their respective tests.
I have not addressed these, because I know less about what's going on
there, but it would be worth bringing them all into line too.

[1]
https://github.com/rails/rails/blob/3-2-stable/activesupport/lib/active_support/testing/setup_and_teardown.rb#L13
[2]
https://github.com/rails/rails/commit/c3e186ec8dcb2ec26d5d56f3e89123b1350c4a6f
[3]
https://github.com/rails/rails/commit/267fb61277ac960ad443d239febcb3136a007d24
[4]
https://github.com/rails/rails/blob/3-2-stable/activesupport/lib/active_support/testing/isolation.rb#L41
[5]
https://github.com/rails/rails/blob/3-2-stable/activesupport/lib/active_support/testing/pending.rb#L14
[6]
https://github.com/rails/rails/blob/3-2-stable/activesupport/lib/active_support/testing/performance.rb#L17
Add regression test to #8907
Fix the TestCase class and make tests pass on ruby 2.0
Revert "Merge pull request #7983 from georgebrock/bug7950-squashed"

This reverts commit 88a296dccc401da143d90cad54b693ff06bf2b58, reversing
changes made to 666a7e34f553cef4c8878362eafc79c7e3f310c3.

Conflicts:
	activerecord/CHANGELOG.md

Reason: this has been resulting in some hard to track bugs and is
introducing a possible breackage in a stable version.
Revert "Work around undiagnosed bug that's draining a relation's bind_values"

This reverts commit 06cc38a2b0d4778746e8a2a2e2b6aa07e1c1c075.