First pass at extracting csv_model from internal codebase.

Ready for review.
That's not allowed with ruby 2.0.0. Will change when I upgrade.