Simplifying and Automating Parallel Machine Learning via a Programmable and Composable Parallel ML System