Let's Think Dot by Dot: Hidden Computation in Transformer Language Models