Make it possible to re-use a runner when calling GeckoInstance.start()

When creating a new runner we always also create a new profile. We need to be
able to re-use profiles in order to support shutdown/restart tests.

Additionally, we need to be able to specify additional arguments when launching
Firefox (again), e.g. '-private-window' to make Firefox start with only a
single private window, as is prominently exposed on Windows.
Add GeckoInstance.wait() to enable us to block until the process has terminated

We can use this to wait until the process is gone or handle a timeout if it for
some reason did not exit as expected.
add restart/shutdown support for marionette
add shutdown/restart tests
test fixes