tryRegisterForResponse

fun tryRegisterForResponse(waitingFromSyncLayout: Boolean): Boolean

We want to prevent a sync layout in the background from waiting on an interrupted layout (which will return a null result). To handle this, we make sure that a sync bg layout can only wait on a NON_INTERRUPTIBLE future, and that a NON_INTERRUPTIBLE future can't be interrupted.

The usage of AtomicInteger for interrupt state is just to make it lockless.