fix(validation): use ng-model-options and $dirty to control when validation occurs

Previously, validation was changed to use $touched to trigger validation on a
field as soon as it received a blur event. When the popover was closed, it
caused the first first focused field to display a validation error which was
unexpected. This changes the popover validation back to using $dirty. It also
allows users to customize their validation behavior by using ng-model-options.