Refactor determination of max updated timestamp

`[].max # => nil`
Add test cases for #in? and #presence_in
begin refactoring add_constraints by moving join keys

add_constraints is complicated and difficult to read. This is the
beginning of a long process of refactoring this code. First step:
moved the join keys out of AssociationScope and into reflection.

We then don't need to call `reflection` because now reflection is
`self`.

`foreign_key` must be named something else because reflection already has a
`foreign_key` method and when passed into `JoinKeys` it was getting the
wrong assignment. `reflection_foreign_key` seemed to be an appropriate name.
I also named `key` `reflection_key` to match `reflection_foreign_key`.
fix typo in changelog [ci skip]
Fix Apache Directives [ci skip]

Directives need to be placed on their own lines in order to work. Tested on: `Server version: Apache/2.2.22 (Ubuntu); Server built:   Mar 19 2014 21:11:15`
Merge pull request #15636 from hundredwatt/patch-1

Fix Apache Directives [ci skip]
cleanup, get rid of trailing whitespace. [ci skip]

Follow up to #15636.

/cc @hundredwatt
Remove deprecation warning
Ensure `column_types` returns a type object, and not a column
Remove YAML serialization workaround for columns

We are no longer including column objects in YAML serialization, thanks
to https://github.com/rails/rails/pull/15621
rm cached attributes

The original patch that added this concept can be found
[here](https://web.archive.org/web/20090601022739/http://dev.rubyonrails.org/ticket/9767).
The current default behavior is to cache everything except serialized
columns, unless the user specified otherwise. If anyone were to specify
otherwise, many types would actually be completely broken. Still, the
method is left in place with a deprecation warning in case anyone is
actually still calling this method.
Merge pull request #15639 from sgrif/sg-column-serialization

Remove YAML serialization workaround for columns
Merge pull request #15638 from sgrif/sg-column-types

Ensure `column_types` returns a type object, and not a column
Merge pull request #15637 from akshay-vishnoi/delete-deprecated-method

Remove deprecation warning
Merge pull request #15628 from akshay-vishnoi/test-cases

Add test cases for #in? and #presence_in
Add has_one? docs [skip ci]
Merge pull request #15641 from arthurnn/small_doc_add

Add has_one? docs
Merge pull request #15429 from sgrif/sg-rm-cached-attributes

rm cached attributes
Merge pull request #15630 from eileencodes/refactor-join-keys-on-add_constraints

begin refactoring add_constraints by moving join keys
Merge pull request #15582 from sgrif/sg-timestamps

Refactor determination of max updated timestamp