refactor: Consolidate logic for converting language IDs
This commit introduces ProgramLanguage
(the name is used avoid
confusion with TreeSitter's Language
) to help manage language ID
conversions.
This merge request depends on !302 (merged) so that it can be reviewed independently of the refactoring.
Edited by Stan Hu