avg rate over 10s, show eta
store: getBytesLeft() looks into chunks
eliminate torrent.bytesLeft, cache in store.getBytesLeft()
ui formatting
peer: get rid of minDelay measuring, use static timeouts (3+2s)
store: invert piecesReadahead/interestingPiecesThreshold logic, make proportional to downRate
transition to seeder
peer: handle even unexpected pieces

we timeout before giving some grace time to cancel