Function markup

This PR has fixes for #171, #76, and #204.  In summary that means:

1. use `on-selection-change=...` in markup rather than `onselection-change=...`, both in templates and in index.html
2. don't declaring callback functions (like `onselection-change()`) in widget prototype
3. desupport syntax like `myWidget.onclick = ...`; only support adding event handlers via markup (item 1) or programmatically via function call (`.on()`, etc.)
4. Declarative can take parameter names, ex: `on-selection-change="console.log(event);"` or `on-func="console.log(param1, param2)`, where `param1` and `param2` are defined in the JS file.

The latter part of (4) assumes that the parameter names haven't been mangled by uglify.