Refactoring

All the root rendering is maintained by an AbstractRenderer with a lot
of factorization.
Renderer implementations will only have to override the member methods.