Allo: A Programming Model for Composable Accelerator Design