Refactors the csv report to be cleaner

Uses the python csv library to generate the csv rows
Uses a cleaner way to generate the data for the csv columns
Uses iterators and generators to save memory during the table generation
Adds a boolean saying the submitter is a presenter
Loads rows from the database as needed

Instead of running a query to get all of the database rows all at once,
iterate through the database rows to save memory
http://stackoverflow.com/questions/1078383/sqlalchemy-difference-between-query-and-query-all-in-for-loops
Merge pull request #98 from hufman/refactor_csv

Part of issue #69.