Display library documentation

Some comments about this change:

* I've moved some methods and properties around, basically putting the setter next to the corresponding getter accessors. The reason is that the [Guidelines for Dart Doc Comments](https://www.dartlang.org/articles/doc-comment-guidelines/#variables-getters-and-setters) state that if there is both a getter and setter, we should comment only the getter. So I think it is a good idea, while the setter does not have documentation that it is at least close to the getter having the documentation.
* I've tried to avoid lines longer than 80 characters.
* I've included quite a few TODOs to indicate comments that I'm not so sure about or where I didn't have any idea what comment to put there. You should have a closer look at those.
* I don't quite understand how the transformation matrix works, so I couldn't put reasonable comments on those methods.
Works only in WebGL and may improve performance for big background images without alpha. The source pixels are not blended with the destination pixels and therefore the GPU does not read the color from the destination pixels.