All remote songs

* When a song is played across IPC both the tag and bundled data are passed
* When a remote song is added to a song host a local copy of the song is created from bundled data
* When a data request is made over IPC it is requested only from a local song and throws an exception if no locally stored song data is available (this stops potential infinite loop of song hosts passing remote songs back and forth) 
* Allows the app and player hater to recover more gracefully if the app quits unexpectedly