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
Merge pull request #272 from reciprocity/feature/even-more-mapping

Move mappers/loaders to their own file and fix a couple bugs