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.
oh right, scanned this too quickly to notice it had been there before