Added ->columntypes::map to ds_result (no overhead unless called). This should eventually trickle down to ds_row — can sit here for the time being. Tidied up imported changes.