Temporal Vectorization: A Compiler Approach to Automatic Multi-Pumping