ngModel refactor

Further refactor and fixes to `ngModelController`.