Fixed crashes when tracking too few sats

We crashed on underdetermined baseline calculations, and aren't performing them anymore. Also cleaned up some logic.
```
2 * num_dds - 3 == 
num_dds + (       num_dds  - 3) ~~ 
num_dds + (MAX(3, num_dds) - 3)
```

The first line is what we used to have, and the last line is what we now have. The whole thing is the number of "code minus carrier" observations we have plus the carrier measurements' projection onto a constraint space whose dimension is whatever is left over after projecting the three spatial dimensions out. That is, (num_dds - 3) if num_dds >= 3 and 0 otherwise. We weren't handling the "0 otherwise" case before.