Expanded song match requirements

More fields now make for a match. Bit mask for nil values
Full commit
Overhaul

Using extended classes.
Lots of fixes

Better seperation of song and collection of songs (playlist).
Async loading of playlists