Improve integration with ngModel

This includes 2 main changes:

1. When the user selects a new date through the UI, it calls $setViewValue on the ngModelController. This provides additional functionality through ngModel, including dirty tracking, debounce (angular 1.3 only), parsers/formatters pipeline.

2. Implement $render function on ngModelController instead of watching ngModel on the scope. This mostly just improves efficiency because it reduces the number of watches, and it is only called when the model value changes, and not when the view value changes. That is, if the user selects a new date through the UI, $render is not called. If the model value changes programmatically, then $render is called.

I added an entry to the demo showing the ngModel validity and dirty flags. From what I can tell, the unit tests cover this functionality well already, so I have not added any additional tests. Please let me know if you have feedback.