Allow different type mapping strategies beside ColumnMapping. This gives us
the freedom to implement TypeMapByOid, TypeMapByClass or some fixed function
mappings.

Rename ColumnMapping to TypeMapByColumn.

Seperate type_map_for_result from type_map_for_query, so thats it's easy to do
type casts for one direction only.