Add has_and_belongs_to_many back to reflections hash.

This adds back `has_and_belongs_to_many` reflection to the reflections
hash. Even thought we are not using that internally, as
`Model.reflections` is a public method we need to keep the hash of
reflections coherent.

ad7b5efb55bcc2e0ccd3e7f22a81e984df8676d1 is the commit that made
has_and_belongs_to_many became a has_many :through and a has_many.

[fixes #14682]
Small test syntax change
Replace reflect_on_all_associations internally
Add _reflect_on_association method for internal use

Internally we wanna look-up the reflection by the association name in
the private list of reflections, so I am adding a
_reflect_on_association method that does that.
Make HasManyThroughSourceAssociationNotFoundError use _reflections

- No need to use .map(:to_s)
- Add @api public to reflections
Add changelog for #15210
Merge pull request #15210 from arthurnn/fix_hbtm_reflection

Fix habtm reflection