feat(player): use mpv in favour of broken libvlc

This uses the MPV player via child_process.spawn and analyzes the output
to generate positional information.
feat(cli): add --num=n option to play n sets
chore(project): bump version