We would like to use module imports and exports as well as ES6 syntax in our source code.
This task encompasses the work to enable ES6 syntax via Babel transpilation for functional and test code under src/. Code under src/ and webpack.config.js should be revised as part of this task at minimum to use import and export instead of require and module.exports.
We were very careful in Popups to [[ https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/Popups/+/master/.eslintrc.es5.json | forbid ES6 syntax in the build product ]]. This task encompasses the work to either duplicate the effort in MobileFrontend. As part of this task and assuming we wish to keep the check, pushing the ES5 config from Popups to the Wikimedia ESLint config should be considered and may expand the effort required to complete the task.
The biggest benefit of adopting this is using ES6 classes (other than OO.EventEmitter the primary reason we use OOjs) so we will start there (const and import will come later)
= Acceptance criteria
 remove need of mfExtend in favor of ES6 classes
 ES6 syntax in the built output e.g. "const x = 1" it doesn't end up in production code. A grep of `const ` in resources/dist should show no results