Factor out semantics and change interpreter to language

This is a better organization, semantically.