wip: Utility functions, one gets a mapping from assignment ID to problem ID and the other is an approximate equal for floating point, since python and the database don't always match even though it is technically the same number
wip: Populate Student grades

Only considers students that have ever submitted at least one answer to a problem.
Has iterative updates based on the last log, but it can also be a forced full populate.
Uses the same grade function called when a student clicks on their progress page and therefore has the same values students would see.
Adds/Updates a row in the CourseGrade table if the percent or grade is different.
Adds/Updates a row in the AssignmentTypeGrade table if the percent is different.
Adds/Updates a row in the AssginmentGrade table if the percent is different. If percent is 0 it only adds/updates if the student submitted an answer to a problem for this assignment.
wip: Forgot to actually log when the run was done
wip: remove bunch of debug print statements