Run dom events by emitting.
Prefix DOM runners with `dom_`
Create a new instance of $handle(r) per widget. Closes troopjs/troopjs-browser#52
`char` is a reserved word, use `c` instead.

Rename `index` to `start` to balance `stop`.
Avoid stepping on "keys" property of array which is preserved by ES6 generator.
Added tests for dom handlers.