Ensure `packages.zip` is cleaned up properly

* Previously, it wasn't being deleted, so files were only being added or
  updated, never removed
* Also, enable using non-zipped "packages" directory for experimenting
  with deployment efficiency (e.g., appcfg.py will precompile Python,
  but probably not inside zip files.)
Fix Deferred returned from TreeView.display()

* Previously, it would resolve much too soon
Replace `can.route` with direct `hashchange` routing

* Basically, `can.route` doesn't support recursive routing, which we use
  with the `display_path` pattern, and we currently don't use any of its
  other features.
Enable recursive `display_path` routing in trees

* Also use `scrollIntoView()` to attempt to make the requested element
  visible (this is glitchy).
Sometimes make Audit links point at Dashboard page

* Auditors cannot see the Program page, but they still see the in the
  LHN, so point that link at the Audit widget on the Dashboard page
Merge pull request #1284 from reciprocity/feature/fix-audit-links-and-redirect

Fix audit links and redirect
Merge pull request #1285 from reciprocity/feature/deployment-fixes

Ensure `packages.zip` is cleaned up properly
Bugfix: map links for objectives, controls and systems
reordering url's in info widget
Bugfix: LHN tooltip position
Merge pull request #1287 from reciprocity/feature/info-widget-reordering

reordering url's in info widget
Merge pull request #1286 from reciprocity/feature/fix-map-links

Bugfix: map links for objectives, controls and systems
Merge pull request #1289 from reciprocity/feature/lhn-top-positioning

Bugfix: LHN tooltip position
Auditor should not be able to edit request status in modal
Merge pull request #1290 from reciprocity/feature/auditor-request-status

Auditor should not be able to edit request status in modal
Envelope autocomplete items to workaround shallow copy

* jQuery autocomplete seems to do a shallow copy on items passed into
  the autocomplete-popup methods.  This means when the item is selected,
  the object passed to the `select` handler looks like a model instance
  in every way *except* prototype chain / instanceof value.  Wrapping
  the objects in a temporary envelope avoids the issue.
Add `context` attribute to all client-side models

* Also adds a `Context` model
* Avoids warning messages due to `context` stubs not being models or
  modelizable; make `Context` a first-class client-side object (needed
  for following commits)
Make stubs singletons

* Maintain a 1-1 mapping between stubs and model instances
* Trigger and consume `stub_destroyed` events to remove items from
  attribute lists without requiring a `refresh()`
* `JoinModel` instances now listen on endpoints to trigger `destroyed`
  when an endpoint instance is destroyed -- this removes mappings
  related to those server-side-deleted join instances, causing the
  mapping framework to update correctly.
Merge pull request #1291 from reciprocity/feature/make-stubs-singletons

Make stubs singletons
adding vertical bar to inner nav