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
I don't think it's a good idea to remove this import as I expect most people will be referencing `models.SubfieldBase` (looking at github code search confirms this). Is the issue silencing the deprecation warning? If so, could we move the warning to `__init__()`?