More extensive validation handling

This change introduces handling of two more cases that occurs when using validators, as well as fixes a bug in nitrogen.js.

Usually postback validation can be seen as having 3 general steps: client side validation, server side validation and invoke event. In the current state, if either client side validation or server side validation evaluates to false, the possibilities of managing these states are limited. It's either no event, or event.

This change introduces possibilities to manage these two cases.

One is done by adding an extra parameter to the `#event_context` record - a boolean telling if a server side validator evaluated to false, should or should not the state be handled. If set to true (which is done by specifying for example `#link{..., postback = foo, handle_invalid = true, ...}` or `#event{..., postback = bar, handle_invalid = true, ...}`). In case an event has been specified to be handled even if the validator evaluated to false, instead of invoking the event via `Delegate:event(Tag)`, it's invoked via `Delegate:event_invalid(Tag)`.

The other addition is to handle the case where the client side validation evaluates to false. This is done in a similar manner by specifying what actions should be executed in case the validation fails, for example `#link{..., postback = foo, on_invalid = #hide{target = spinner}, ...}` or similar to any `#event{...}`. This is implemented by passing this script down to `$queue_event` and finally to `$do_event` in nitrogen.js.

The bug fix mentioned is on line 84 in nitrogen.js (https://github.com/jadahl/nitrogen_core/commit/0643f69edaaf27bdfee16610883032cc6eb03c85#L17L84). It fixes a bug causing client side validation to always fail.