Proppo: a Message Passing Framework for Customizable and Composable Learning Algorithms