Cast number to string in Postgres

fixes #9170
Handle conditional get in live requests - this will prevent error when using stale on live streams(issue #9636)
Merge pull request #9713 from imanel/live_stale

Handle conditional get in live requests
extract factory method and push common code up to abstract adapter
use the method so we do not depend on internal ivars
hashes are ordered, so just use the columns_hash ivar
Apparently people were mutating this array. :'(

This reverts commit abba61e2bbe320894ba8449ebdf778a1d2af545b.
pg is the only adapter that supports the xml type, so push the method down
UTF-8 encode all keys and values in nested params hash.
you can provide uuid_generate_v4 as the default value for uuid columns
dup and set the default proc to nil rather than looping through everything
Getting Started Guide: 3.2.9 -> 4.0.0. [ci skip]

Brought up in https://github.com/rails/rails/issues/9727
safely publish columns and columns hash info
hide more data in the schema cache
just access the ivars rather than rb_iv_get
oops!
bumping arel
clean up pk delclaration in `create_table`
Small typos here and there.
fix hash duping on 1.9