unsafe-perform-io: Just take an IO value directly

This is an incompatible change in the interface, so major version bump.
Move configuration settings into lib argument
Add fetchgit builtin