Mappings

Picking up where #1374 (inadvertently) left off. Very WIP, definitely not ready for merge.
Just because it minifies slightly better... `component` becomes a single-letter variable, `this` stays as `this`. Also the ES6 transpiler doesn't need to do `var this$0=this` to preserve lexical scope. Pretty negligible saving but I've found I've got into that habit lately...