[REVIEW ONLY] Abstracts browser launching

This is a sketch of an API change that makes it possible to completely change the browser launching process. This code will likely never land in this form.