Explain the difference between implicit, explicit, and fluent waits in Selenium, and describe a scenario where each should be applied.