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.
Add number-of methods to PlayerManagerInterface.
AutoDJ fixes.

* Remove QSignalMapper usage and instead proxy signals from
  DeckAttributes.
* Connect track load / unload / failed-to-load signals from
  BaseTrackPlayer. Lays the groundwork for solving Bug #1396931.
* Add a helpful debug flag for tracing AutoDJ calls.
* Remove PlayerInfo usage from AutoDJ for getting the loaded
  track. Instead, use BaseTrackPlayer itself.
Make DeckAttributes fields private.
Make the tests reflect how real players react to track load requests.
Remove unused variable.
Address review comments.
Merge pull request #410 from rryan/autodj

AutoDJ fixes.
LateNight: Make sure coverart setting is persisted
Merge branch 'master' into DJO-hacks-trunk

Conflicts:
	src/basetrackplayer.cpp