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...)
Do you think we could let the user specify the binding as a part of dependencies in the YAML file. This way the package name and location of the YAML file would fully identify a widget.