ProgramShell concept

This brings us closer to #150

Notice how triangle example got simpler now, and also how `draw()` signature has shortened.

`/// Abstracts the shader parameter structure, generated ...`