Refactor how programming languages are added

You can now switch between programming languages that are contained in separate
files. To add new languages just use the existing ones as a template.