Several changes to reduce the number of change events
Merge remote-tracking branch 'origin/develop' into feature/maybe-performance
System/Proc mapping on import fixes
Override 'model' for Directive and SystemOrProcess models

* this fixes a bug where, in some loading patterns, objects may be
  instantiated as abstract types (Directive or SystemOrProcess) instead
  of one of concrete subtypes
* this also enables consolidating requests for Directive and
  SystemOrProcess subtypes, which eliminates 1-3 startup requests on
  object pages
Move Mapper/Loader methods into models/mappers.js
Alas, abstract endpoints don't work with the backend yet.
Fix Role edit widget

* selection chaining is now handled by events, rather than logic
* add missing mapping types for Program
patch for showing object types
added wording for all object types, removed oneline
text change in LHN search
Added is_allowed mustache helper for permissions
Refactor validate_option and log failed validations
Add custom exception ValidationError
Add behave test for option validation
Removed redundant relay method
is_allowed helper now defaults resource_type/context_id to the page object's values
Updated is_allowed helper to parse more arguments

0..n actions
0..1 resource_type
0..1 context_id
Removed words child of, and added parent directive below description
Tweaked is_allowed for non-Program pages, added is_allowed check for all tree sections
Added permission check for deleting mappings