add abstract parser

the parser API includes the parse function which takes a CSV Row and a
set of value changing methods that will change values to something
compatable with the course class.
Merge pull request #3 from zachmokahn/abstract_parser

add abstract parser