Structure and Interpretation of Cellular Automata