Fix eager loading for various endpoints

* Fix use of `undefer_group` and `subqueryload`
* Fix `ControlCategorized.eager_query`
* Ensure `get_current_user_json` actually uses eager loading
Fix `get_mappings` to return the correct Direct mappings
Prevent script error due when unmapping unmapped object

* Basically, when deleting some objects, the "refresh" of objects linked
  to the deleted object can complete before the object is removed from
  mapping lists.  In these cases, the object will be removed from the
  mapping lists by other means (propagation of `stub_destroyed` events
  to the affected models).
Ensure that `Direct` mappings are loaded correctly

* The `binding.instance` value may not be loaded, so delay
  initialization until that is complete.
Eager load `Context.user_roles` on `Context` endpoint
Add permissions for `Context` and `UserRole` reading

* Before Sprint 28, `Context` was not a first-class resource, but now it
  is, so roles should have access to `Context` resources.
Add and use `Context` and `Context.user_roles` in mappings
Eager load basic data for `ObjectiveSection.section`

* This is needed because `Section` is polymorphic
Don't refresh mapping on attribute change unless necessary

* Previously, the process of refreshing the instance would trigger
  `refresh_stubs` on unused mapping lists
Fix role lookup for Auditor
Ensure authorizations are loaded before querying them

* Caused `Map Objective` link to appear for Auditors
Merge pull request #1336 from reciprocity/feature/fix-eager-loading-regression

Fix eager loading and mapping regressions