/*
Module Object non-exotic for ES5:

module.module        bound module object
module.execute       execution function for module
module.dependencies  list of module objects for dependencies

 15.2.6.2 EnsureEvaluated adjusted
function ensureEvaluated(module, seen, loader) {
      if (module.evaluated || !module.dependencies)
        return;

      seen.push(module);

      var deps = module.dependencies;

      for (var i = 0; i < deps.length; i++) {
        var dep = deps[i];
        if (indexOf.call(seen, dep) == -1)
          ensureEvaluated(dep, seen, loader);
      }

      if (module.evaluated)
        return;

      module.evaluated = true;
      module.execute.call(__global);
      module.module = Module(module.exports);
      delete module.execute;
    }