Runs a Fresh effect through generating Uniques using
unsafePerformIO.
Ironically, despite the fact that this uses unsafePerformIO, and
runFreshUnsafe uses no unsafe operations whatsoever, this is still
typically safer to use than runFreshUnsafe, although runFreshUnsafe
is perhaps more efficient.
The worst thing that this particular use of unsafePerformIO could result
in is the loss of referential transparency, as rerunning an interpreter stack
using runFreshUnsafePerformIO will create different Uniques. This should
never matter.
This could be potentially be less efficient than runFreshUnsafe.
If you ever observe that multiple invocations of fresh produce the same
Unique under runFreshUnsafePerformIO, then open an issue over at the
GitHub repository.