Merge pull request #15210 from arthurnn/fix_hbtm_reflection

Fix habtm reflection
Conflicts:
    activerecord/CHANGELOG.md
    activerecord/lib/active_record/counter_cache.rb
    activerecord/lib/active_record/reflection.rb
    activerecord/test/cases/reflection_test.rb
Use .to_s on _reflections lookup
Rename Posts to Articles in Guides' Getting Started App, continuation of #15215 [ci skip]
Merge pull request #15323 from JohnKellyFerguson/getting-started-app

Docs: Rename Posts to Articles in Guides' Getting Started App
Refactor the handling of arrays in where predicates

Simplifies the code slightly, isolates non-nil non-range values into a
single array, which will make it easier to do things like apply type
casting to them in the future.
Merge pull request #15350 from sgrif/sg-refactor-predicate-builder

Refactor the handling of arrays in where predicates
Refactoring .reflections public method.

Now the internal reflections will hold a reference to its public
representation, so when the outside world calls `Account.reflection` we
can build a list of public reflections.
Merge pull request #15300 from arthurnn/refactor_reflections

Refactor reflections
[ci skip] Add benchmark your code section to contributing to ruby on rails guide.

I have seen many times that maintainers want people to use this gem to give
a benchmark report. It would be nice to add it and refer to it later.
Merge pull request #15347 from JuanitoFatas/benchmark-in-contributing-to-ror

[ci skip] Add benchmark your code section to contributing to ruby on rails guide.
Extract types which don't require additional typecasting to a method

Database specific adapters shouldn't need to override `type_cast` to
define types which are already in an acceptable state.
Merge pull request #15351 from sgrif/sg-allowed-types

Extract types which don't require additional typecasting to a method
Allow empty arrays in where predicates
Merge pull request #15352 from sgrif/sg-allow-empty-array-where

Allow empty arrays in where predicates