Yep, this is confusing :).

rate is change in rate -- like the rate slider on a turntable -- affects both pitch and tempo
tempo is tempo stretching independent of pitch
pitch is pitch shifting independent of tempo
baserate is file samplerate / master samplerate 

speed is the change in rate or change in tempo. RateControl doesn't know whether or not keylock is enabled (and I don't think it should know).

Pulling baserate out of the rate calculation is also needed in the master_sync branch. @ywwg has made the same change.

Having a dedicated tempo CO would be nice but then MIDI controllers would have to have a script in order map a simple rate slider. Many DJs are used to the "turn on keylock and the pitch slider magically becomes a tempo slider" idiom. This is built into a hardware such as CDJs so I think it's the right thing to keep it. Beyond this, we don't have space in the UI for a separate tempo slider, pitch slider, AND rate slider :).