Renamed AsyncRunner to Runner and provided a version of "execute" that is able to make use of an external message loop