remove stored step to increase accuracy

I was seeing a lot of progress bars "finish" at 99% instead of 100. The stored step attribute was causing a loss in precision. (a width of 45 with an end of 28 should show the problem) Moving all the division to occur only when show_progress() or __str__() are called fixes that.

Also added ability to decrement the progress bar.