pub fn load_roster(path: &Path) -> Result<HashMap<String, String>, RosterError>
Load a roster CSV mapping student IDs to names.
Expected format: name,_,student_id (header row skipped). Handles UTF-8 BOM.
name,_,student_id