The main aim of this PR is to provide a backend the power to decide what is next, what happens when skipped, when a song has been played, when a song is added, etc.

Is a way to obtain plug-able logic for the core.

I need to be able to control how the tracklist behaves, and what the user can do from the backend. For example, I may need to sync the current playback time with a remote, for example, when joining a Grooveshark broadcast.

When a track of my backend is to be played, I need to provide an streaming, totally-private URL for gstreamer, and use an alias in the TlTrack object. I also need to be able to change metadata of the track to be played, mainly because I don't know it till I gather the streaming URL, which expires within 5 secs.

I may start to create a grooveshark plugin as an example of the use cases that could be provided, as advanced services have need of them.