Extended custom validation types of references

Previously it was possible to pass the value of a field given it's name,
with the current changes it will also be possible to:
- Use an attribute of the same field
- Use the value of a field found by a query selector (by tag, by class
and by id).
Added thoth.invoke to call functions in an array

- thoth.invoke takes an array containing functions and will call them
all using the method apply.
- thoth.triggerEvent will use thoth.invoke to call the event handlers.
FormValidation now provides a submit event

This event is augmented with the errors resulting from validation.
Remove the errors to allow form submition.
Added thoth.invokeEx

thoth.invokeEx will do the same as thoth.invoke except it takes a
callback that will decide if the execution continues or not. This
callback will recieve the return value of the las called callback and
also its index. Returning false will stop the execution of the
callbacks.

This allows to implement stopImmediatePropagation.
Small optimization for Array.contains
More optimizations
Moved events into Form validation

This will allow some further optimizations
Consolidated event invokes.
Changed event behaviour, new validated event

- submit will run before validation
- validated will run after validation
Enforcing rule: all lines ends with a symbol.

This ensures automatic semicolon insertion will not be a problem.