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
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`
fix hash duping on 1.9
ask column if it is a pk
`Http::Headers` directly modifies the passed environment.

The env hash passed to `Http::Headers#new` must be in env format.
Also be aware that the passed hash is modified directly.

docs and test-cases for setting headers/env in functional tests.

Follow up to #9700.
document request simulation methods in functional tests.