Enable lists to use multiple sources via chained mappers

* add GGRC.ListLoaders.CrossListLoader
* remove can.Model.Cacheable.define_association_proxy and friends
* remove notes saying widgets don't contain all mapped objects
* add GGRC.Mappings with extensive, but not complete, mappings
Improvements on mapping functionality

* reduce number and duplication of events due to mappings
* calculate mappings on demand rather than as observables
Trivial fix to restrict models to their proper list
Merge remote-tracking branch 'origin/develop' into feature/mapping

Conflicts:
	src/ggrc/assets/javascripts/apps/business_objects.js
	src/ggrc/assets/javascripts/controls/control.js
	src/ggrc/assets/javascripts/models/simple_models.js
	src/ggrc/assets/javascripts/sections/section.js
A few changes to avoid unnecessary events

* special case for `context`, since it's the only attribute which has
  implied meaning when `null`
* handle `context` in modals controller rather than form markup, which
  avoids repeated set, add, remove events
* add `Cycle` model, temporarily, to suppress events on Program.cycles
* don't add `_wysihtml5_mode` attribute to the instance
Fix some tree view options and bugs
Various fixes

* don't duplicate `find_all` (and hence, `refresh`) in modals_controller
* delay rendering list items for a moment in case the controller is
  immediately replaced
* `child_count` now listens to `list.length`, which makes counts correct
Make RefreshQueue request limiting actually work
Fix case of re-adding the object just removed from the list
Update templates to match new `using` usage
Disconnect CanJS Cacheable models to avoid event madness

* Basically, instead of instances directly containing other instances
  (either directly or in lists), instances now contains stubs, and lists
  of stubs.  This more accurately reflects the data coming down from the
  server, and avoids mass event propagation.  Since we're not actually
  using events emanating from sub-objects and list-objects, this is
  okay.
* Adds Observe.prototype.stub and Observe.List.prototype.stubs to
  generate the stub objects on compatible Observes and Model instances.
* Adds Observe.prototype.reify and Observe.List.prototype.reify to
  return the corresponding instance(s) for given stubs and lists of
  stubs.
* Adds CMS.Models.get_stub and CMS.Models.get_stubs to mimic
  CMS.Models.get_instance and CMS.Models.get_instances, but return
  stubs.
* Note: Attached instances will still be instantiated
  (can.Cacheable.model will still be called), but the source instance
  will only retain the stub.
* Note: This commit loses some of the optimizations we made inside
  can.Model.Cacheable.model -- these can (and should) be reinstated, but
  are less important, since unnecessary events are less catastrophically
  slow.

* Additional fixes:
    - Overrides can.Model.Cacheable.attr to not bork when passed an
      Observe instances.
    - Fixes `using` mustache helper to use `reify` correctly, but this
      required changing the signature/usage to only support keyword
      arguments.
Fix tree-node adding by inserting relative to classes

* In strange cases, options.$footer and options.$header would be present
  in active TreeView instances, but would point at detached elements.
  Thus, using insertBefore, etc, would insert new nodes detached from
  the DOM.
* To fix, add `.tree-footer` classes, and insert relative to
  `this.element.find('.tree-footer')`, which seems to always work.
Update Models to use `stub` and friends instead of `model`

* also removes some `serialize` methods and objects which were
  either problematic (the methods) or unnecessary (the objects) with
  the `stub` paradigm.
Merge remote-tracking branch 'origin/develop' into feature/mapping-with-stubs

Conflicts:
	src/ggrc/assets/javascripts/models/cacheable.js
Merge remote-tracking branch 'origin/develop' into feature/mapping-with-stubs

Conflicts:
	src/ggrc/assets/javascripts/controllers/modals_controller.js
Minor TreeView optimization and UI-locking avoidance
Fix Directive modal showing the wrong Directive name

* also remove unused `page_object` reference from Section modal
Two fixes regarding models

* use `data-toggle` instead of `data-method`, since `data-method`, along
  with `data-remote`, triggers an AJAX request via `rails.js`
* suppress post-delete refreshing
Merge remote-tracking branch 'origin/develop' into feature/mapping-with-stubs

Conflicts:
	src/ggrc/assets/javascripts/bootstrap/modal-ajax.js
Further optimization of mappers for minimizing requests

* Previously, most loaders were eagerly loading all contained instances.
  Now, loaders use only stubs wherever possible, and a final stage,
  "ReifyingListLoader" is implicitly added to ensure full instances are
  available to non-Mappers (e.g., TreeView controller).