feat(input): Allow custom events and timeouts that trigger a model update

By default, any change on the content will trigger an immediate model update
and form validation. You can override this behavior using the ng-update-model-on
attribute to bind only to a comma-delimited list of events.

I.e. ng-update-model-on="blur" will update and validate only after the control
loses focus.

If you want to keep the default behavior and just add new events that may
trigger the model update and validation, add "default" as one of the specified
events.

I.e. ng-update-model-on="default,mousedown"

Also, a ng-update-model-timeout attribute will allow defering the actual model
update after the last trigger event. This feature is not available in radio
buttons.

Closes #1285