Improves the module loading/execution algorithm.
- Uses script injection to generate a module function, instead of directly
  executing the module.
- Delays execution of the module until it is first required.
  -> The module execution occurs synchronously with the require call, better
     approximating Node semantics.
- module, exports, require and global are now included in the module closure.