New branch to start the metadata fetching over as it was getting out of hand.
Some reorganising
Restructuring the metadata fetching code
Added a fair semaphore that the player acquires before playing because a synchronised block doesn't guarantee any order.
Handles stopping and starting playback a bit better.
Playlist item now contains information about how long the current song will last, and also if metadata is being fetched