The GPU drivers take a while to update their free memory reporting, so we need to wait until the values converge with what we're expecting before proceeding to start another runner in order to get an accurate picture.
A few obvious levels were adjusted, but generally everything mapped to "info" level.
This switches darwin to dynamic loading, and refactors the code now that no static linking of the library is used on any platform