local/core: Update random tests to be more predictable

- Replace setting the random seed with mocking out shuffle with reverse. This
  makes tests easier to reason about while still being able to test correct
  behaviour.
- Increases number of tracks to four to avoid test passing due to symetry in
  plain and reversed lists.
- Made test_eot_track_with_random_after_append_playlist actually test eot and
  not next.
- Found a test failure in handling of test_random_until_end_of_playlist, fix in
  next commit.
local/core: Add and fix more random related tests.

- Adds tests for eot_track vs next_track as we were only testing the one code
  path.
- Makes test_random_until_end_of_playlist_and_play_from_start actually test
  random and not repeat.
- Adds test_play_track_then_enable_random which is the underlying bug covered
  by the regression test for issue #17.
core: Fix handling of shuffle (fixes #453)

- Shuffle internal list when random is enabled
- Use presence of tl_track to determine if this is first run to trigger
  subsequent shuffles.
core: flake8 fixes
core/local: Update playback test with review comments.

- Fixes typo.
- Adds assert to better test intermediate state.
Merge pull request #541 from adamcik/feature/random-cleanup

Cleanup random tests and fix #453