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
This will not necessarily be true any-more, since they are also used for queue items. Anyways, this is probably just left over from when parent_id was a class variables and should now just be deleted. It is already explained what parameters the __init__ method takes in DidlObjct, so just out it goes.