Machine Learning Design Patterns: Solutions to Common Challenges in Data Preparation, Model Building, and MLOps