ivle.database: Exercise.get_by_name, now auto-inserts and returns a new Exercise if it was not found in the DB. This may be a bad idea, but it's consistent with the existing behaviour of ivle.db.get_problem_problemid, so a lot of things depend on it (nothing explicitly creates an Exercise).