Smarter SetAllowance + Auto-renew
SetAllowance
will now only form contracts as needed, to make up the difference between the current number of contracts and the desired number.
This new scheme may result in "heterogenous" contracts, i.e. a set of contracts ending at different heights.
Contracts are renewed as soon as the blockheight enters their "renew window." The amount of funds allocated per contract is calculated such that each renewed contract can support the same number of sectors.
To prevent slow rescans, contracts are only checked for renewal when cs.Synced() == true
.