Use mkWeakIORef for finalization of `LocalPool`s

This is essentially rebasing #14 on top of #15, as the former had the same
"early finalizer" issue.