Multiple language support

@cscheid's old branch for pluggable languages