Explain the differences between MVVM, MVP, and Clean Architecture. Under what circumstances would you choose one over the other?