This cleans up the dynamic library discovery logic.
In many cases (e.g. where sophisticated build systems are not available) it is much more practical to have a single globally built dynamic library, and to reuse that dynamic library everywhere where it is needed. This doesn't make that possible yet (due to the runtime singleton), but it moves this package in the right direction UX-wise by decoupling the default locations from the actual implementation.
This cleans up the dynamic library discovery logic.
In many cases (e.g. where sophisticated build systems are not available) it is much more practical to have a single globally built dynamic library, and to reuse that dynamic library everywhere where it is needed. This doesn't make that possible yet (due to the runtime singleton), but it moves this package in the right direction UX-wise by decoupling the default locations from the actual implementation.