Support for bare js modules

Enabled by setting `--js` via cli or `js : true` using programmatic API. Mostly require restructuring `Module` class to actually be multiple classes with a shared base, but there were some other subtleties as well.