Composable transformations of Python+NumPy programs: differentiate, vectorize, JIT to GPU/TPU, and more