Fixed #18757, #14462, #21565 -- Reworked database-python type conversions

Make resolve_columns a permanent fixture, remove convert_values.

Current implementation passes on sqlite at least, but does destroy performance. Need a nicer converter-collection based approach. Also some tests that we can use the new override from_db_value, and that [#21565](https://code.djangoproject.com/ticket/21565) is fixed in the process.

- [x] Make the tests pass
- [x] Refactor to use "convertor-collector" based system
- [x] Add tests for [#21565](https://code.djangoproject.com/ticket/21565)
- [x] Add tests for [#14462](https://code.djangoproject.com/ticket/14462)
- [x] Add documentation for `from_db_value` and appropriate test suite for it
`SELECT * FROM (SELECT "_SUB".*, ROWNUM AS "_RN" FROM (%s) "_SUB" %s) WHERE` ...

(`ROWNUM AS "_RN"` should be part of the SELECT clause, not FROM clause).