This allows cleaner declarations of shaders as well as allowing easier
swapping of the whole shader module for selection & clipping.
This also allow to easier toggle between the old overlay engine and
overlay-next as they don't share the same shaders anymore.
This makes it possible to reuse the overlay engine code for selection
purpose, but without any overhead for the viewport drawing.
The separation is made clear by having a dummy selection implementation for
viewport drawing and an object implementation for object selection.
Other impementation might come later (like for depth picking).