Wait for apps that don't respond.

And don't throw if they are already disconnected.
Allow scripts to indicate they're online with process.send("online")
Aligned GRACEFUL_TIMEOUT with the hard coded value in Reload.js.