Merge pull request #10505 from patricksrobertson/bigserial_id_not_identifying_pk

Handle other pk types in PostgreSQL gracefully.

Closes #10505.

- rebased
- test slightly modified
pg, fix Infinity and NaN values conversion.

Before this patch `Infinity`, `-Infinity` and `Nan` were read as `0`.
Merge pull request #13334 from gregolsen/postgresql_infinity

pg, fix Infinity and NaN values conversion.

Closes #13334.

* rebased
* removed guard
* inlined guard into case statement
pg, map `char` and `name` types as string. [dark-panda & Yves Senn]

Closes #10802.
pg, `change_column_default` accepts `[]`. Closes #11586.
:scissors:
test, use `columns_hash[]` in place of `columns.find {}`.
Add multiple lines message support for SSE module
Use block parameter rather than `$1` during `gsub!` so `ActiveSupport::SafeBuffer` values aren't mangled.

Fixes #15064
Require active_support/core_ext/string/output_safety and use html_safe rather than use non-public SafeBuffer API.
Update and add tests in array_ext_test.rb

- Fix `test_to_with_instruct` typo to `test_to_xml_with_instruct`

- Rename `test_to_xml` to `test_to_xml_with_hash_elements` to make test
name more specific.

- Add `test_to_xml_with_non_hash_elements` and
`test_to_xml_with_non_hash_different_type_elements`

  `to_xml` behaves different when containing elements are same and
  different types.

- Add `test_to_xml_with_indent_set`
Update require in `array_ext_test.rb`

Removed `FIMXE` tag to require necessary file but not the whole core_ext
Hash#except is expensive and this is a hotspot, so use a dup + delete
make the module version quack the same as the instance

this way we can stop checking respond_to on every call.
extract route key translation to a method and reuse it
simplify AC:ViewPaths::_prefixes. by making it recursively traversing up the inheritance chain, classes can override local prefixes.
reduce conditionals in url_for
deprecate AbC:Base::parent_prefixes.
rename ::_local_prefixes to ::local_prefixes to state the public attribute.
document the latter.
make ::local_prefixes private, test overriding it and remove documentation for overriding ::_parent_prefixes.
typo: resulution -> resolution [ci skip]
add a test for passing two models to the polymorphic_url method