function Domain() {
  this.modules = {};
  this._currentModule = null;
}
We invoke require() in the context of a Domain so we can have multiple
sets of modules running separate from each other.
This contrasts with JSMs which are singletons, Domains allows us to
optionally load a CommonJS module twice with separate data each time.
Perhaps you want 2 command lines with a different set of commands in each,
for example.