Added visitor replacer.
Added recursive module walker.
Added module.exports && exports references.
Added guard against double-call of the same module.
Moved caching & new object creation to preamble.
Added `id` property as per spec.
Changed caching logic to correctly handle Node.js non-spec "module.exports = ..." assignment at any moment of execution.