First version of auto-DJ crates.
I need some feedback on the GUI, but otherwise this feature should be ready for merging into the trunk!
Just some minor changes to comments.
Merged with trunk; minor updates to merge conflicting changes.
Now the auto-DJ-crates table stores the last time the track was played, and uses that to prioritize randomly-added tracks!
I thought the system didn't have that info...turns out it's stored as PlaylistTracks.pl_datetime_added for set-log playlists!

Also updated to latest trunk version.
Merged with lp:mixxx
Made the auto-DJ-crates feature subject to conditional compilation.
Implemented an "Add crate" menu on the "Crates" tree-item in the "Auto DJ" feature.
One more convenient way to add a crate to the auto-DJ queue!
removed valueChangedFromEngine()
unified word choice for pSender, pSetter is the a function pointer to set() for me
added pSender to setMidiParameter
removed setValueFromThread
removed pSender from ControlDoublePrivate::reset()
clean up code
merged from lp:mixxx
merged from lp:mixxx
Changed "Add Crate to AutoDJ" to "Connect to AutoDJ", and "Remove Crate from AutoDJ" to "Disconnect from AutoDJ", and fixed curly-brace placement, per Daniel Schürmann's feedback.
One more menu item needed updating -- "Add crate" is now "Connect Crate to AutoDJ".
Merged with lp:mixxx
Now random-tracks chosen by the auto-DJ-crates feature can be in terms of how recently the track was played.
Now auto-DJ-crates better handles situations where very few tracks are available.