feat($validation): respect field validation

...also listen for invalid events on fields, aggregate them
and fire an "invalid" event on the form with all invalid fields
as event detail.

closes #5