fix MMIO issue

Not all devices exited their functions after indicating completion. This resulted in a race condition where threads for device handlers would still be running, but the MIC would think that all handlers are finished, so any handlers still running would not have their values included unless they managed to return prior to the while-loop ending and the value being returned to the caller of MemoryInterfaceController.Read().