This fixes a deadlock found running #3043. The deadlock occured when an inflated header was being woken up and locked on the mutex_. This didn't set the GC state properly so it would deadlock when a stop the world was requested simultanuously. This also fixes the hard_lock logic to retry if the locking sequence gets interrupted. This is needed because we should not have interrupts around that and have to defer the interrupt handling until after the hard lock block.
Fixes the build failures on Travis for OS X.