Refactor Date, Time, DateTime timezone methods

Similar implementations of #in_time_zone exists for Date, Time and DateTime so
method is extracted into its own module. Also some logic is extracted into
private method.
use bind values for model types
Merge pull request #11686 from gzohari/pr-refactor-time-datetime

Refactor Date, Time, DateTime timezone methods
push some validation up to the factory method
we should not allow invalid objects to be constructed
pass the mixin in to the code generation methods
no need to to_sym
callback should always have a value
Revert "all `scope_chain` methods allocate new arrays, no need to dup"

This reverts commit 1468a4b89aa4bca99160bfa03572b2c0ab348db5.
do is_a? tests on assignment so runtime is faster
oops! :bomb:
Merge pull request #11689 from arunagw/readme-updated-av

Moved README into action_view [ci skip]
Minor optimization and code cleanup in query_methods.

- Use symbols rather than strings where possible to avoid extra object construction
- Use destructive methods where possible to avoid extra object construction
- Use array union rather than concat followed by uniq
- Use shorthand block syntax where possible
- Use consistent multiline block styles, method names, method parenteses style, and spacing
Fix status code in documents [ci skip]

RFC 6585 Additional HTTP Status Codes
http://www.ietf.org/rfc/rfc6585.txt
Added missing closing bracket for markdown url in guides [ci skip]
Merge pull request #11701 from morgoth/link-fix-in-guides

Added missing closing bracket for markdown url in guides [ci skip]
Merge pull request #11699 from satococoa/fix-render-status-symbols-document

Fix status codes in document
Fix `current_page?` when the URL contains escaped characters

In some cases webservers like nginx send the escaped characters
lowercased to the Rails application. The current_page? helper was
comparing the escaped strings that are different since Ruby escapes the
URL using uppercased characters.
separate some mutations from reflection construction
extract more mutations to the caller