Provide separate progress counters for each thread

We were not reporting the correct progress level.. only ~90% of the
desired progress updates were actually going through, due to errors in
progress incrementing in multi-threaded environments.

Fixed so that each thread gets its own dedicated variable to increment,
so it can not clash with other threads.

Closes #20