made the playlist API more consistent, now passing video objects around instead of 'fetch' them by id from the internal list, and check if it exist in almost every function call