Support for Columns parsing & Save Progress

1. Use batches of 50. This prevents the TLS timeout error.

2. Save progress of each file being processed. This is because S3 has an
unreliable API where it might return EOF instead of file data.

3. Read columns from the file headers itself. This is because AWS
started saving one extra field time_spent in log files.