Unify bindings

This is a proposal for unifying the little JavaScript snippet each widget author needs to include. Rather than having one codepath for static rendering and one codepath for Shiny, you can use this simplified API to support both at once:

```r
HTMLWidgets.widget({
  name: "knob",
  initialize: function(el) {
    $(el).knob();
  },
  renderValue: function(el, data) {
    $(el).trigger("configure", data);
    $(el).val(data.value).trigger("change");
  }
});
```

This example doesn't show it, but if `initialize` returns a value, it's passed as a third argument to `renderValue`.

**Open questions/issue:**

- [ ] If it's likely we'll have input bindings in the future, then perhaps `HTMLWidgets.widget` should be renamed `.outputWidget`, or something like `widgetType: "output"` or `output: true` should be required on the object.
- [ ] The `widgetOutput` function uses `widgetname_output` rather than just `widgetname`. I didn't include it in this PR but to get the knob example working, I had to change it to just `widgetname`. Maybe you can help me understand the indented semantics of `widget_div`/`widgetOutput`.
- [ ] Where should package authors be told to place their binding.js files? It can't be right in inst, it needs to be a subdirectory, otherwise we will copy the entire package into their dependencies directory at static render time.

**TODOs:**

- [ ] Validate the .name property provided by the user. (Or maybe we can infer it? Would that be too magical? Probably...)
OK sorry I just realized this comment was redundant to comments I already made when I opened the pull request.

Perhaps we should discuss over vchat?