Better usage of *Basic* in class names, part 1: SceneGraph object.

Use AbstractObject<dimensions, T> like before and add two kinds of
aliases instead of only one:
AbstractBasicObject2D<T>/AbstractBasicObject3D<T> for abstract type and
AbstractObject2D/AbstractObject2D for Float.

Makes it easier to use AbstractObject in templates of fixed dimensions
(e.g. Bullet integration, where it can now be written as
`AbstractBasicObject2D<btScalar>` instead of potentially confusing
`AbstractBasicObject<2, btScalar>`).

Partially reverts commit cfd405c32ca74f7e139078cb0199e76c7b7413ef.
Better usage of *Basic* in class names, part 2: SceneGraph animables.

Use Animable<dimensions, T> and AnimableGroup<dimensions, T> like before
and add two kinds of aliases instead of only one:
BasicAnimable[Group]2D<T>/BasicAnimable[Group]3D<T> for abstract type
and Animable[Group]2D/Animable[Group]3D for Float.

Partially reverts commit c32c12b387cf644360ad3b2e9305076d16bacc16.
Better usage of *Basic* in class names, part 3: SceneGraph features.

Use AbstractFeature<dimensions, T>, AbstractGroupedFeature<...>,
AbstractFeatureGroup<...>, FeatureGroup<...> like before and add two
kinds of aliases instead of only one, one with *Basic* for abstract type
and one for Float type.

Partially reverts commit 572efce3f7cd413addcf67967a88263f7d235830.
Better usage of *Basic* in class names, part 4: SceneGraph transformations.

Use AbstractTransformation<dimensions, T> like before and add two
kinds of aliases instead of only one:
AbstractBasicTransformation2D<T>/AbstractBasicTransformation3D<T> for
abstract type and AbstractTransformation2D/AbstractTransformation3D for
Float.

Partially reverts commit 346ea2feb699876ee18d00655d8732b52ea30be5.
Better usage of *Basic* in class names, part 5: SceneGraph drawables.

Use AbstractCamera<dimensions, T>, Drawable<dimensions, T> and
DrawableGroup<dimensions, T> like before and add two kinds of aliases
instead of only one: AbstractBasicCamera2D<T>/AbstractBasicCamera3D<T>,
BasicDrawable2D<T>/BasicDrawable3D<T> and
BasicDrawableGroup2D<T>/BasicDrawableGroup3D<T> for abstract type and
AbstractCamera2D/AbstractCamera3D, Drawable2D/Drawable3D and
DrawableGroup2D/DrawableGroup3D for Float.

Also fixed some find&replace errors in documentation and include guards.

Partially reverts commit a0d60bbaa75df9dbd8172a6b8936019b15b2c807.
No `using namespace std` anywhere.

Remains from the dark old times.
Make also constructor protected when destructor is protected.

Creating given object on heap (via new) (and then not deleting it) would
be possible that way, which shouldn't be.
No need to have virtual destructor for AbstractTexture.

Protected constructor and destructor is sufficient, AbstractTexture
isn't meant to be used via AbstractTexture* anyway.
No need to have this Doxygen voodoo.

Why not show in docs that AbstractQuery itself isn't instantiable or
destructible.
No need to have virtual destructor in Buffer.
SceneGraph: no need to have virtual destructor in AbstractCamera.

Protected constructor and destructor is sufficient, AbstractCamera
itself isn't meant to be deleted (via pointer).
SceneGraph: clarify why there _is_ virtual destructor.
Shaders: no need to have virtual destructor here.

Protected constructor and destructor is sufficient, AbstractVector
itself isn't meant to be deleted (via pointer).
Text: no need to have virtual destructor here.

Protected constructor and destructor is sufficient, AbstractTextRenderer
itself isn't meant to be deleted (via pointer).