Pass bindingContext as a parameter to the viewModel constructor

By providing the bindingContext to the viewModel constructor, we are able to create sub-components with less boilerplate code.

For example the live example 2, from page: http://knockoutjs.com/documentation/extenders.html could be done with components like this:

First register an auxiliar component, which assumes the model has a observable called value
```
    ko.components.register('required-text', {
      viewModel: function(params, bindingContext) {
        this.visible = ko.pureComputed(function(){
          return bindingContext.$rawData.value() == ""
        })
      },
      template: '<span data-bind="visible: visible">This field is required</span>'
    });
```

Bind the context:
```
var appModel = {
  firstName: {value: ko.observable("John")}, 
  lastName: {value: ko.observable("Doe")}
}
 
ko.applyBindings(appModel);
```

With markup:
```
            <div data-bind="with: firstName">
              <input type="text" data-bind="value: value, valueUpdate: 'afterkeydown'" />
              <required-text></required-text>
            </div>
            <div data-bind="with: lastName">
              <input type="text" data-bind="value: value, valueUpdate: 'afterkeydown'" />
              <required-text></required-text>
            </div>
```

Currently the required-text -component would require passing parameters in the markup like:
```
            <div data-bind="with: firstName">
              <input type="text" data-bind="value: value, valueUpdate: 'afterkeydown'" />
              <required-text params="value: value"></required-text>
            </div>
            <div data-bind="with: lastName">
              <input type="text" data-bind="value: value, valueUpdate: 'afterkeydown'" />
              <required-text params="value: value"></required-text>
            </div>
```