Trade: use strongly typed enum for AbstractMaterialData::Type.
Trade: document ability to copy and move.
Trade: properly specify underlying enum type.
Trade: de-inline virtual destructor.

Less generated code.
Trade: added TextureData parameters.

Not adding border color (yet), as it is not supported in ES.
Trade: ability to have either color or texture in PhongMaterialData.
Trade: move the data instead of copying.
Debug output operators for Sampler enums.
Trade: debug output operator for AbstractMaterialData::Type enum.
Trade: debug output operator for TextureData::Type enum.
Added Tegra best practices to documentation.
Shaders: explicitly setting normal matrix in Phong shader.

Currently the most used scene graph transformation implementation are
dual quaternions, which don't allow any scaling. The original code
normalized the rotation matrix, involving three dot products and one
sqrt, even if it wasn't needed in most cases -- even if using scene
graph with matrices mostly you don't scale at all and thus the shader
internally renormalized already normalized vectors for _each object_ in
each frame.

This _will_ break things, don't forget to update the code and call
`setNormalMatrix()` along with `setTransformationMatrix()`.
Math: added Matrix[34]::rotationNormalized().

Useful to pass normal matrices to shader, namely with recent commit
b349ca54ad33071d3c83581fb39a7e8a406a2944.
MeshTools: better assertion message for interleave().

Print expected and actual count to simplify debugging. Also the phrase
"nothing done." is useless, as nothing is _ever_ done after assertion
failure. Probably remains from the times where that wasn't assertion but
merely harmless warning.
Primitives: fix empty Icosphere position array.

Positions and normals have the same data, thus the data were simply
copied to positions and then moved to normals in return to save one
needless copying. However it seems that these two operations were
swapped by the compiler (C++ standard?) and thus there were no positions
to be copied.

Now explicitly creating copy of position array and then moving them in
return. While at it, renamed also `vertices` to `positions` to be
consistent with the rest of the engine.  Also added simple (count only)
unit test to avoid this error in the future.
Doxygen fixes.