Added annotations to (almost) all 9ml elements via decorators

Not liking the sound of refactoring all the from/to_xml functions I wrote a reciprocal pair of decorator functions `read_annotations` and `annotate_xml` that read&strip and insert the annotations before/after the to/from_xml functions are called. I was also able to apply these to the load_* methods in the abstraction layer module so now all (with exception of the elements that don't correspond to a BaseNineMLObject) elements are able to read/write annotations.

I also used a similar approach to refactor the resolution of references in the current and remote contexts, which makes things quite a bit neater I think. 

NB: I had to move the contents of some files around to avoid circular import issues