Reinstitute protection against user calling ready callback twice

When the driver_ready = true line was removed to avoid errors calling the async iterator too many times, it opened the possibility that the driver could call the ready callback more than once, triggering too many async iterations.  This was fixed with the nextIterAlreadyCalled guard variable.
refs #2417