Move linear reactance model out of WhistleEvaluator into InstrumentRangeTuner, now called LinearXInstrumentTuner.
The evaluator now depends on the instrument tuner, instead of the other way around.
In WhistleEvaluator, measure error in cents between target and predicted nominal frequency,
instead of difference between modeled and calculated reactance.
This increases the CPU time required to optimize, but provides solutions that are much closer to targets.
WhistleEvaluator is now essentially the same as CentDeviationEvaluator, except for the InstrumentTuner used.
Save statistics from instrument optimization.
Use conventional fingering for high C-nat.
Expose a method to set blowing level, independent of preferences,
to allow use of this class in standalone tests.
Fix division by near-zero quantity by using limit of approach to zero.
Use named constants for upper and lower hole diameter bounds.
Reduce upper bound.
Move functionality into StudyModel, to facilitate standalone testing of that class.
StudyModel now encapsulates uses of the bind factories; they are no longer needed
in StudyView.
Add base class for testing StudyModel, and a derived class to test WhistleStudyModel.