Trade: improved *Data constructors and destructors.

 * They are now deinlined into source files, as most of the classes have
   either heavy members (std::vector) or virtual methods.
 * All of them are explicit now (that should be already done, don't know
   why not).
 * Passing huge classes by value and using move constructors to avoid
   unnecessary copying.
Cleaned up OpenGL.h header.

I didn't know that C preprocessor had `#elif` until now. Learning
something new every day.
Text: made constructors explicit.
Text: assert that also freeing up FreeType resources doesn't fail.
Text: properly compute glyph count in FreeTypeFont layouter.

It was the same as byte count, thus working only for pure ASCII, not
UTF-8.
Delete VAO in Mesh only if it is nonzero.

glDeleteVertexArrays() was called even after the Mesh was moved out to
another object. On my NVidia it was working but it might cause issues
elsewhere.
Fixed outdated documentation.