Upgrade -progress to be an @property and floating point

Document it a bit, too
Stop trying to communicate error by negative progress
Internal method for enumerating transfer records
Total up all transfer records written and expected bytes to calculate progress