rate.filter_array:  work around dynamic range problems with fft convolution

- FFT convolution provides only about 14 orders of magnitude of dynamic
  range in the result.  we can extend this by dividing the array into
  ranges of magnitude, filtering each separately, clipping, and summing the
  results
- this was originally implemented as a work-around in snglcoinc.py;  this
  patch moves it into rate.py proper so that all code can take advantage of
  this trick (it has been used for a while and seems to work well)