Support arbitrary values for checked binding

Currently the `checked` binding uses the element's `value` property, which is always a string. But often the user would like something else as the checked value (an integer or object, for example). I propose that we add a helper binding called `checkedValue` that the checked binding will read.

Example:

```html
<!-- ko foreach: Choices -->
  <input type="checkbox" data-bind="checkedValue: $data, checked: $root.Values" />
  <span data-bind="text: Text" ></span>
<!-- /ko -->
```

`checked` will use a `checkedValue` value if present and fall back to using `element.value` otherwise. Since a common usage is to have `$data` as a value, this can be the default if neither is set (no `checkedValue` and blank `element.value`).

`checkedValue` can write its value to `element.value` if it's a number or string. Thus is could take the place of `attr/value` for those types.