Implements the following function, which is a FIR filter
y[n] = sum(k=0,M) h[k]*x[n-k]
We implement the fir function with five helper functions, depending on
the type of the filter. In the following functions, we use the O&S
convention that m is the order of the filter, which is equal to the
number of taps minus one.