initial draft of multi-language scheme

this adds a couple of methods to the language vtable
and updates the languages and wrapper code.
now compilations are properly per-language.

there are still a couple FIXMEs in here