lightnvm: move io sync control into gc

When we delay IOs, we need an external waiting mechanism for knowing
when an IO has been completed. The previous sync where only activated
when an actual IO where executed, and thus if it was postponed, it
didn't wait accordently.