fix(input): ngList is updated when array model values are changed

fixes #1751

Depends on PR #5688
Split of PR #3865

When the model referenced the same same array and the array values
where changed, the list wasn't updated.
Now watchCollection is used to detect changes in NgModelController.

Changes in input.js breaked tests:
— select select-multiple should require
— select ngOptions ngRequired should treat an empty array as invalid when `multiple` attribute used

Changes in select.js fixed them again: changes in the collections should trigger the formatters and render again.

BEHAVIOUR CHANGE
There is a change in the behaviour of ngList when typing a list.
When “a , b” is typed is automatically changed to “a, b”.