Fix apply logic, add `before:*` events, improve ConcepForm handlers

The `node.apply()` method has been fixed to prevent redundant event
triggers as well as properly handling branch nodes.

The `before:*` events can be used to prepare views for a state change.
Note that the target event is not guaranteed to trigger (like apply)
depending on the processing steps involved.

The ConceptForm has been updated to display the appropriate message
depending on the state of the local context. The error message now only
displays if a filtered is attempted to be applied rather than after each
change.