Detangle EOT and EOS.

This commit tries to detangle EOS from EOT which we have incorrectly
intermingled. EOS events should only be happening at the end of the playlist
when we are about to stop. EOT handling has been removed / broken in this
change, and will need to be re-added with proper tests.
Add change track to playback providers.

This method is intended to make implementing EOT handling much more streamlined
by adding a way to easily just change the URI and any other state without
messing with gstreamer pipe states

Naming of this is a bit unfortunate as it is not the same as the
core.playback's concept of change_track. At least not yet
Use source's factory name to determine type.

Checking the URI inside the new-source handler turned out to tickle some issue
that gave us deadlocks. Getting the source and checking which factory created
it is much safer.
Setup about to finish handling for proper EOT support.

With this change we ask the core.playback system to set the next tracks uri and
otherwise update state as needed. With this change we should be able to support
streaming oggs and gapless playback to mention a few of items this fixes.

On the down side, this change breaks test_end_of_track_skips_to_next_track_on_failure
as there is no clean way to handle this with the async nature of this EOT
handling.
Merge branch 'develop' into feature/end-of-track

Conflicts:
	mopidy/audio/actor.py
	mopidy/backends/spotify/playback.py
Use blocking calls when changing tracks on EOT.

This ensures that we block about-to-finish and the pipeline until the next URI
is set, alowing for at least EOS free playback. If the uri is set quickly enough
this will also be gapless.
audio: Handle about to finish for non appsrc playback

The appsrc cleanup code was still short circuiting the about to finish handler,
this meant that EOT handling never happened for local files and playback stopped.

With this change proper EOT handling works for all track types.
Merge branch 'develop' into feature/end-of-track

Conflicts:
	mopidy/audio/actor.py
	mopidy/backends/spotify/playback.py
audio: Remove test for error handling that no longer happens.
core: Trigger playback ended before switching tracks
audio/core: Rework how we hook up end of track handling.
core: Unbreak end of track related tests.

We should only be hooking up end of track when an audio instance is passed in.
Additionally the tracklist tests where wrongly sending in the audio module
instead of the mock audio.Audio instance.
Merge pull request #231 from adamcik/feature/end-of-track

Proper EOT / EOS handling