Merge branch 'master' into topic/constructor_rewrite

Add some extra code to enforce the assumption that any bind type constant
is accessible in _dbi_attrs_for_bind, or in other words that all necessary
DBDs are already loaded (concept originally introduced in ad7c50fc)

Without this the combination of 9930caaf7e (do not recalculate bind attrs
on dbh_do retry) and a2f228547 (do not wrap iterators in dbh_do) can result
in _dbi_attrs_for_bind being called before DBI/DBD::* has been loaded at all
The cursor_class is also RDBMS-specific

We also could be called before there is any connect info to determine the
driver from - bail out, we will come back on the next call
Fix test description (DrHyde++)
Normalize varnames (zero functional changes)
Reorder prefetch logic for optimal execution (no functional changes)

Avoid yet another expensive try call
Stop needlesly invoking the $rs bool overload
Another parser microoptimisation - lose nullability checks where possible
space-compress tests making them readable - no changes
Use the defined-or operator in generated code on newer perls

Even *less* expensive op ;)
Consider where condition when determining leftmost order stability

Extract more eyebleed into DBIHacks in the process
Recognize root source unqualified columns under limited prefetch
Remove idiotic RowCountOrGenericSubQ - it will never work as part of as_query

I am not sure how I overlooked this, blame is on me :(

Replacing with a ROWCOUNT fallback at the appropriate place
Start running more limit dialect torture tests if possible
Overhaul GenericSubq limit - add support for multicol order

A lot of other cleanup as well - this should be the end of it ;)
Factor out ORDER BY direction detection/stripping

The slightly unobvious regex is so that it's easier to add support for
more clauses (e.g. NULLS FIRST/LAST) later.
Variation of dq's d35a4e048 - sanify multiplying join prune

Use a private more descriptive attr name
Fix "current rs is always first in from" brainfart introduced in 893403c81

Dear self from 4 years ago - what were you thinking? In any
case I can't recognize why this is needed so cleansing it with fire
Another blast from the past - fix distinct/order behavior borked by d59eba65f

While the SQL we test for is valid syntax - the result it produces makes
zero sense for these resultset arguments. Reshuffle the distinct construction
and reuse the codepah for order_by rewrites.

This is a heavy change, but it is *extremely unlikely* anyone was relying on
the previous behavior - any aggregate value would have been wrong...
Test live mssql server generated SQL
Support for $val === [ {}, $val ] in literal SQL + bind specs

This wraps up the changes started in 0e773352. Now DBIC bind values can
be specified just like the ones for SQL::Abstract as long as no bind
metadata (e.g. datatypes) is needed

Also added an explicit check to catch when a non-scalar non-stringifiable
value is passed without a bind type metadata