More alignment of data structures to DIDL

The first step in implementing my comments on #231, and on the way to a fix for #226 and #227

It begins to align the data structures more closely to the DIDL spec. This gives us more future flexibility, removes some subtle bugs, and should generally make life a little easier :grinning: 

Some ML classes have been renamed, but you should not notice any real difference. Some unnecessary classes have been removed. The MS data structures moved to their own module, and will require further work (but they should work just as well as they did before).

Event code still not fixed, but please test and report any problems.  In particular check adding to queue, and adding URI's please
Probably not. I think it was added purely to be able to make the distinction between Sonos playlists and imported playlists*, which we no longer care about.

* And maybe also at the time, to be able to do different things with how the ID's were extracted from te URI, before @dajobe fixed that.