This class performs the actual max likelihood detector logic. There is one per SignalBand.
Basically, it checks that the SNR is above the inBandThreshold (this comparison is done in linear units, even though
thresholds are specified in dB).
Next, a secondary test is performed. The signal estimate in each associated GuardBand (if any were specified) is taken,
and averaged. If this average level is greater than the guardBandThreshold, a detection is initiated. The detection remains
active for as long as these two tests pass.
When a detection begins, the startDetection() method of DetectionFilter is called, and an updateDetection() is immediately called
with the data of the first data point. Any subsequent data points are passed to the DetectionFilter by calling its
updateDetection() method. Finally when the detetction finished, the DetectionFilter's endDetction() method is called.