I moved FieldMapping to the API to take care of this (see commit message), but I ended up also implementing the alternative, separating ColumnMapping into both API and SPI classes, so I've posted the result here: https://github.com/rdblue/kite/tree/separate-record-mapping