Fix PlaylistInfo to request only specified range from MPD

Previously, when a range was specified, we fetched the full playlist
from MPD and sliced it locally. This can cause MPD output buffer errors
with large playlists, and had unnecessary network overhead.

Note: previous PlaylistInfo tests were lacking the necessary setup of
putting some items on the current playlist.
This function is becoming a mess of if statements. I think we should clean this up. I suggest something like this:
```
switch {
case start < 0 && end < 0:
    // c.cmd("playlistinfo")
case start >= 0 && end >= 0:
    // c.cmd("playlistinfo %d:%d", start, end)
case start >= 0 && end < 0:
    // c.cmd("playlistinfo %d", start)
case start < 0 && end >= 0:
    // error
default:
    panic("unreachable")
}
```

Then, `c.readAttrsList("file")` should happen only once (after the switch), instead of two places as it is right now.