SmoothedValue should avoid smoothing in some cases

This situation currently does result in the value beeing smoothed while staying identical:

juce::SmoothedValue<double> smoothedValue;
smoothedValue.reset(100);
smoothedValue.setCurrentAndTargetValue(1.0);
smoothedValue.setTargetValue(0.0);
smoothedValue.setTargetValue(1.0);
jassert(!smoothedValue.isSmoothing());

This might look like an unnecessary optimization for a rare case, but in many case you might refresh the target value multiple times, eg with a generic value and then a specific one when some specific condition is met. This might causes the value to be constantly smoothed with the current implementation.

Here is a fix, in setTargetValue (line 289 of juce_SmoothedValue.h for JUCE 8.0.8)

from

if (stepsToTarget <= 0)

to

if (stepsToTarget <= 0 || approximatelyEqual (newValue, this->currentValue))