Course participants

Implementing #185 
We can't because we're (sadly) retrieving all submissions, not aggregating over them.

Actually now that I think of it, all this is probably optimizable into a single query if we added a field to submissions that stored the status (`completed`/`attempted`/`not_attempted`).