I think you can analyze quality control from a broader perspective. Defects can be removed all along the development cycle. The question is what activities are adequate in your context to remove defects. You can peer review your requirements, design and code. You can perform unit test, apply TDD and/or design integration and system test cases and execute them in a formal testing phase after all code is completed. You need to analyze all the picture.
From this perspective, everyone could be involved constatly in quality control. Now, if the question is "Should someone be fully assigned to verify formally all the implemented functionality?" my answer is yes. In my organization no matter how many people are working on a project. All the implemented requirements must be formally tested. There are 1-person projects where this rule applies, and we have good results so far.
# Are testers required? (I know Joel's answer)
In my opinion, yes
# Should testing occur as development is occurring or should it only be done on a completed iteration?
As you prefer. Test results are feedback about your code. I prefer this feedback sooner than later.
# If testers are required, should they be doing unit testing or only integration and regression testing?
A common approach is to assign unit testing activities to developers and ntegration, regression and system testing to testers. But it depends on your context. Anyhow, I consider that someone different from the author of the code provides great value in the verification of the functionality.
# If developers are not performing the testing, should development stop while testing is going on, waiting for bugs to be identified so that they can provide fixes as quickly as possible?
Sometimes we assign some people to fix bugs and the rest continues with the following functionality. Sometimes all the people is needed to fix bugs. It depends on the severity of the issues and other factors.
# If testers are required, what is the best use of a tester's time while development is going on?
Analyze the functionality, define tools, identify as many scenarios to test as possible, design test cases and automate them, plan the test cycles. All these activities are required if you don't want to end with and ad-hoc verification phase where the testers just play around with the software without boundaries, goals or sense of progress/coverage.
Hope this helps