Explain how synchronization works in Selenium and when you would choose fluent wait over explicit wait.