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
The Music Services Data Structures have been moved to their own module, to make data_structures.py clearer. They are used only by the WIMP plugin and nothing else. I suspect that we do not really need them at all, but I don't know anything about WIMP (and we don't in fact have it in the UK I think).  

The Music Services structures share a lot of code with the normal data structures. Because they are now in their own module, that code is duplicated, and pylint complains. The only way to stop it is to add this into pylintrc.

There are two options (1) refactor the Music Services modules now to interface more with the new data_structures, or (2) leave them as they were, but disable the duplicate code checker.  I opted for (2).  Hence the reference to a refactoring which will have to take place.  I will open an issue to track this.