Fixes form submission events not firing properly.

Form validation error events were firing more often than they were
really occurring.
Block form submission if there's a failing custom validator.
Disable form multiple-submit unless there's a validation error.
Adds "error" styles to select and textarea fields.
Pass string to validation function for normal fields, but element for non-standard fields.

Temporary solution, planning on making this more sensible in the future.
Only add "shake" animation on standard fields.

Prevents having the whole field set shake if using a custom validator
on a field set.
Use "success" or "error" class for suggestions.

Allows us to use suggestions in separate “it’s okay but did you mean”
or “you need to fix this” contexts.
Linty lint.
Remove separate logic for custom validators.

Just using normal “data-validate” syntax, a lot cleaner.
DRY up field element type checking.
Updated uglify and linting settings to be consistent with DS app.
Merge pull request #281 from DoSomething/custom-validators

Custom validators