From Decoding to Meta-Generation: Inference-time Algorithms for Large Language Models