@redmunds re: What's the purpose of the Language.prototype data members? 

I think they are mainly there so we have a place to add documentation to.

They might also have a positive impact on performance as V8 has its own concept of classes and assigns objects with the same properties the same class. So if you take an empty object, and add properties to it one by one, its class changes every time. If all properties are known from the start, one class object is used for all instances, resulting in better optimization.
Note that this is just a wild guess based on something I remembered from reading about how to optimize JavaScript code, I am not sure that this works when the properties are defined in the prototype rather than the object itself.