Fix query being executed multiple times.
Fix query being executed multiple times.

Replaces code using `query._iter()` to something that doesn't execute
the query.

`orm_query_keys` can just get the column names from
`query.column_descriptions`.

`orm_result_type` and `core_result_type` can use internal sqlalchemy
code to produce the `result_type` function.

djrobstep/sqlakeyset