Fix lifetime issue in PlayerManager static methods.

The static ControlObject* can outlive the PlayerManager so it's unsafe
to keep a pointer to them. Use a ControlObjectSlave* instead and check
it for validity.
Extract interface from BaseTrackPlayer and PlayerManager.

This will make mocking and faking them much easier and prevent
implementation details from being exposed elsewhere in Mixxx.