resourceloader: Implement modern module loading (1/2)
This defines mw.loader.require() and 'module.exports'. These will
be exposed to mw.loader.implement() closures as local 'require'
and 'module' parameters.
Changes:
* This alters nestedAddScript to maintain a single queue to
ensure scripts from different modules are never downloaded in
parallel (used in debug mode).
Note:
A further patch will start passing module and require to module definitions.
Bug: T108655
Change-Id: Ia925844cc22f143f531216f2fe3efead08885b5d