bug 939809

* added StackManager.snapshot which gets a copy of the array of applications in the stack
* updated CardsView to get the list of and current app from StackManager
* made StackManager ignore the System application explicitly
* minor changes to help with jshint later
* added 'position' getter on stack manager
* added several tests to ensure that the position is current after stack has changed
* moved apps used in cards view test into a variable used to populate running apps as well as the stack
* removed old user ordering code (web os model task manager...) since it's incompatible with our new model
  and the code does not have any tests and it hasn't been enabled in a long time. We're moving on!
* detect cardsview being dismissed and re-enable edge gestures
* created a local help function to enable/disable edge gestures based on events received
* select currently active application card in cards view when cards view is shown
  if no active application, then default to stack position.
* temporary hack in window manager in preparation for switching to app instance IDs for app window manager internals.
* cards view uses 'position' in stack internally, updated code to stop using old 'origin' name to avoid confusion.
* cards view now broadcasts 'newStackPosition' when it's closed. -1 is no change, otherwise, newStackPosition contains the position of the application that will be in the top of the stack.
* made edge swipe detector listen to 'cardviewclosed' with new fancy newStackPosition, this also prevents edge gestures from being re-enabled when we go back to the homescreen.
* made stack manager use newStackPosition to move application that was displayed from cards view to top of stack.
* fixed cards view unit tests
* prevent system app from appearing in the application history stack.
* added test to stack manager to ensure that system app does not show up in stack

r=etienne