In-place filt!, allow passing initial filter state

This redefines `filt` as `filt!` with a few modifications to perform its
filtering in-place. `filt` is defined as a simple wrapper, copying the vectors
that `filt!` modifies.

Further, both methods now allow an optional argument for the initial filter
state vector. This vector is modified in-place in `filt!`.
Be smarter about the initial filter state

Compute an initial state for filt such that its response to a step function is
steady state.
Revert "Be smarter about the initial filter state"

This reverts commit 19ba34c001152977d4fc011c75e1e08bb260aacf.
Fix copy! for ranges
NEWS and doc for filt state and filt!
Add a 3-argument method for scale! for scalars

Just like as scale! allows a pre-allocated argument for scaling a matrix by a
vector, this allows specifying a third array as the output for scaling by
scalars.
Refactor filt! to use an output argument

- No longer modifies the filter state in place, instead uses a copy
Update filt! API to have out as its first argument

Add a secondary method with keyword arguments to allow si and the output array
to be optional.
Merge pull request #7513 from mbauman/filt

RFC: filt improvements