core: Make events emitted on playback consistent (fixes #629)

This commit does not try to make the events correct/perfect with regard to
GStreamer states, end-of-stream signalling, etc. It only tries to make the
events work consistently across all the methods on the playback controller.

* play(track) while already playing has changed from:

  - playback_state_changed(old_state='playing', new_state='playing')
  - track_playback_started(track=...)

  to:

  - playback_state_changed(old_state='playing', new_state='stopped')
  - track_playback_ended(track=..., time_position=...)
  - playback_state_changed(old_state='stopped', new_state='playing')
  - track_playback_started(track=...)

* next() has changed from:

  - track_playback_ended(track=..., time_position=...)
  - playback_state_changed(old_state='playing', new_state='stopped')
  - track_playback_ended(track=..., time_position=0)
  - playback_state_changed(old_state='stopped', new_state='playing')
  - track_playback_started(track=...)

  to same as play() above.

* previous() has changed in the same way as next().

* on_end_of_track() has changed from:

  - track_playback_ended(track=..., time_position=...)
  - playback_state_changed(old_state='playing', new_state='playing')
  - track_playback_started(track=...)

  to same as play() above.

* stop() has reordered its events from:

  - track_playback_ended(track=..., time_position=...)
  - playback_state_changed(old_state='playing', new_state='stopped')

  to:

  - playback_state_changed(old_state='playing', new_state='stopped')
  - track_playback_ended(track=..., time_position=...)
docs: Update changelog
docs: Add issue ref to changelog
Merge pull request #641 from jodal/feature/consistent-playback-events

Make core playback events consistent
docs: Update changelog
Rename test files to pattern expected by test runners
mpd: Implement "listall" command
mpd: Implement "listallinfo" command (fixes #145)
docs: Update changelog
docs: Remove browsing from list of MPD limitations
audio: Ensure tests can be run on their own
audio: Nest tags in scan data return value
audio: Change audio data convert to operate on taglists
models: Make .copy(foo=None) null out field.
audio: Update how translator test data is built.
audio: Add tests for all fields that can be converted
model: Update to handle None in sets.

Also adds some missing tests for composers and performers.
audio: Cleanup translator code.

This code was trying to be to smart for it's own good. This commit greatly
reduces the magic and leaves us with much more straight forward code.
docs: Add config to frontend and backend examples.
Merge pull request #643 from jodal/feature/mpd-listall

Add "listall" and "listallinfo" MPD commands