* Exclude unavailable simulator runtimes
* Fix some warnings
* Don't hang forever when the React tests fail to start
`simctl launch --console` goes into an infinite loop if the app fails to launch
successfully, so don't use --console and manually wait for it to exit.
With async callbacks, in-process listeners need to be able to wait for anything
currently in progress to complete just like out-of-process listeners. In
addition, removeListener() needs to be declared as returning a Promise so that
typescript code can actually use it.