Properly get track position before change events
Properly get track position before change events

In particular, this allows to send the right information when:

1. the track finishes and switches to the next one in the list;
2. user presses next / previous

The cases of EOS and stop event were already handled properly.

Note: we only have GStreamer's `about-to-finish` event to deal with the
end of a track, which usually happens a few seconds before the end of
the track. We set the position to the length of the track, which is not
overridden unless the user generates a relevant callback.

jodal/mopidy,adamcik/mopidy,ZenithDK/mopidy,jodal/mopidy,kingosticks/mopidy,adamcik/mopidy,kingosticks/mopidy,mopidy/mopidy,jodal/mopidy,ZenithDK/mopidy,mopidy/mopidy,ZenithDK/mopidy,mopidy/mopidy,adamcik/mopidy,ZenithDK/mopidy,jcass77/mopidy,kingosticks/mopidy,jcass77/mopidy,jcass77/mopidy