First pass at extracting csv_model from internal codebase.

Ready for review.
Yes, I ended up moving appraisal setup into a different story. Will remove.