Fix for #2969. Added ability to arbitrarily launch activities.

Change should be straight forward.  Only important change is the new start_activity path and startActivity function.  Had to add _startApp to support existing calls that are tightly coupled to the old startApp signature.
I don't see where this is used in the new code you added