change the background visual logic

Now the background surface does not have to be the size of the window,
it could even be 1x1, so now we use a visualtransform to scale the
surface to the window size. This means that the background needs to be
the fist sibling of the other visuals.
move nanosvg to another translation unit

faster compiles, cleaner code.
finish handling dpi changes

only the derived class knows some stuff so ended up here.