Prototyping work on getting a user role assignment modal in place.
Committing to hand off to Dan.
Merge remote-tracking branch 'origin/develop' into feature/users_roles_mapping

Conflicts:
	src/ggrc/assets.py
Run 'downgradeall' for extensions in reverse order

* extension downgrades may depend on tables in 'core', and should
  remove their foreign key constraints first
Import ggrc.app in ggrc.migrate

* otherwise, imports will happen in the wrong order, causing import
  recursion and weird things break
Don't duplicate or overwrite 'behave' extra_step_paths
Enforce uniqueness of people.email
Change table and column for users_roles

* 'users_roles' -> 'user_roles'
* 'user_roles.user_email' -> 'user_roles.person_id'
Fix tests for change in user_roles of user_email->person_id

* added rule 'Given a user with email...' to create a Person object only
  if one with that email does not exist already (because behave tests
  don't clean up after themselves)
Fix loading of steps in ggrc.behave

* now loads steps found in parents of all paths passed on command line
* now reliably deduplicates steps paths regardless of command line order
Add UserRolesModalSelector to change authorizations
Merge remote-tracking branch 'origin/develop' into feature/users_roles_mapping
Move common mustache templates to assets pipeline
Also add template paths to assets.yaml
Shuffle widgets around

* make ListView take a list_loader option
  - if not set, use normal list or related list loaders, depending on
    options.is_related value
* move widget descriptor generation into Dashboard and PageObject
  controllers
Change LocalStorage model to workaround CanJS merge bug

* without this change, widgets would come back (in some cases) after
  reload even if you closed them
Two fixes for ggrc_basic_permissions

* gracefully handle no-op Roles, e.g. where permissions is None
* check for permissions by string name rather than actual class
Move 'add widget' button into inner-nav

* use new block "widget_area" to simplify templates
* make .add-nav-item be { position: absolute; }
* also added inner-nav to dashboard page
Many additions to enable live-bound Authorizations widget

* permissions are now available on the client at GGRC.permissions
* the "Permission" object acts like "ggrc.rbac.permissions"
* fix assets.py to not fail if an asset list is empty
* first semi-custom widget: program_widget_descriptors.authorizations
  - uses "Permission" to only display when appropriate
  - uses list_loader to collate Person and Role objects into desired
    format
* add "options.extra_widget_actions_view" to add code to the
  widget-actions areas
Minor fixes for modal selector
A few changes to avoid JS errors