refactor ios startup cascade

this PR is not ready to merge yet. @snevesbarros, this is my attempt to bring back what I had before and do a bunch of additional cleanup of the surrounding code.

It works for everything including SafariLauncher, except, on the 2nd run using SafariLauncher, there's what appears to be a low-level error that causes the remote debugger to freak out and hang. Can you pull this and run some safari tests against it?