Unclear check for skipping scaling due to missing bandwidths or missing descriptors

We skip old results when scaling, but there are a few things wrong with this check:

  1. It is hard to tell what this line does, because it mixes "and" and "or" without brackets: l.desc_bw_obs_last or l.desc_bw_obs_mean and l.desc_bw_avg
  2. We skip scaling if any input is missing, but then we check desc_bw_obs_type and ignore some inputs
  3. If we are missing a descriptor for long enough, we stop generating results for a relay. We could use a substitute value instead.
            if not(l.desc_bw_obs_last or l.desc_bw_obs_mean and l.desc_bw_avg):
                log.debug("Skipping %s from scaling, because there were not "
                          "descriptor bandwidths.", l.nick)
                continue
            if desc_bw_obs_type == TORFLOW_OBS_LAST:
                desc_bw_obs = l.desc_bw_obs_last
            elif desc_bw_obs_type == TORFLOW_OBS_MEAN:
                desc_bw_obs = l.desc_bw_obs_mean

https://github.com/torproject/sbws/blob/9065848247e49330560a2f73b044fb8c02338b48/sbws/lib/v3bwfile.py#L1244