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
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.