Add the ability to run without explicit mainloop integration.

Sometimes someone will want to set up their own SyncronizationContext
and have the tests run without calling any special setup/shutdown
methods. This isn't fully tested but if there are bugs i can fix em.