Deleting abstract classes without virtual destructors is undefined

Deleting abstract classes without virtual destructor is undefined, according to gcc warnings.

Fix this by having a trivial virtual destructor defined for Stage and Shader classes.