Many best-practice improvements plus separate *.module.js file per module and build support for same