Visual split

This splits the Visual class into a simple base Visual and ModularVisual, which implements the component system. Makes it clear what base coding is required to implement a new visual.