Shaders: documentation improvements.
SceneGraph: documentation updates and fixes.
SceneGraph: using std::reference_wrapper instead of pointers.

Currently all the functions taking vectors of objects (e.g. setClean(),
transformations() and transformationMatrices()) were taking pointers,
which lead to additional (and often forgotten) nullptr checks. The
internals are now much more clean, as the parts where we are dealing
with pointers are reduced to bare minimum.

Also renamed private Object::setClean() function to
Object::setCleanInternal() to avoid overload clash with the public one.

The old way is now an nullptr-checked alias to the new one, is marked
as deprecated and will be removed in some future release.
SceneGraph: use std::reference_wrapper in FeatureGroup internals.