Add option --require to support node require() calls for modules=register

Pass relativeRequire as argument to module instantitor.
ModuleTransformer adds 'require' parameter to module instantitor.
Fixes #1486
Consider
```js
if (object.experimental !== undefined) {
  this.experimental = object.experimental;
}
```
where `object` is an `Option`.   The user sets `object.annotations = true` then compiles. Since annotations is an experimental option, `object.experimental` returns `null`, fails the test against `undefined`, thus setting `this.experimental` to `null` which coerces to `false`, turning off all experimental options, including `this.annotations` and annotations compile fail.  

getter/setter pairs work as expected when they emulate get/set, but here our setter is switching a collection to all `true` or all `false` while our getter returns `null` whenever any experimental option is set opposite of the last setter call.   So an assignment like `this.experimental = object.experimental;` will clear the experimental options unless every experimental option in object is already set. 

We can disallow setting experimental and keep the getter/setter or we can change either the getter or the setter or we can only allow setting experimental = true. Any of these are fine by me. But I don't see how we can allow setting experimental to `any` with our current getter/setters.