Platform: better diagnostic in Sdl2Application::tryCreateContext().
Platform: fixed Sdl2Application::tryCreateContext().

It seems that the context is negotiated when creating the window, thus
it fails there and not later when actually creating the context.
Math: write Vector2::cross() in terms of perpendicular() and dot().
Physics: default constructors for shapes.
Math: rework of component-wise matrix and vector functions.

First, removed functions which can be done with Vector's member
functions and functions from Functions.h. More flexibility and less
redundant code which leads to easier SIMD implementation later.

    Vector4 a;
    Float b = a.maxAbs();         // before
    Float b = Math::abs(a).max(); // now

Second, removed all functions from RectangularMatrix which are
implemented in Vector and added conversion from RectangularMatrix to
Vector and back. Also for more flexibility and less redundant code (i.e.
reusing SIMD-optimized Vector::max() instead of writing it again).

    Matrix4x3 a;
    Float b = a.max();            // before
    Float b = a.toVector().max(); // now
Math: doc++
Math: added sqrtInverted() function.

There are SIMD instructions for that, so why not have it in place.
Math: added Vector::lengthInverted().

Also because there are SIMD instructions for that.
Added support for uniform arrays.

Also not including Math/Matrix.h in AbstractShaderProgram.cpp and using
just RectangularMatrix everywhere.
Made some constructors constexpr.
Physics: very minor code cleanup.
No need to have `const` also in function declarations.
Platform: more intuitive argc/argv Arguments structure.
Trade: properly implement move constructor and assignment in MeshData.

Default implementation of move constructor won't set pointer to indices
to `nullptr` in `other` object, thus implementing it explicitly. Not
sure what will happen in move assignment, implementing it explicitly
too.
Primitives: reworked remaining classes to have the same API as the rest.

Now every primitive can be created using `solid()` or `wireframe()`
function returning directly Trade::MeshData.
Fixed one-value AbstractShaderProgram::setUniform().

The original workaround for enums didn't work (all enums were treated as
UnsignedInt even though they had Int as underlying type), moreover the
solution didn't scale for other possible types with implicit
conversions. Now explicitly listing all scalar types and templated
vectors/matrices, it should work for most cases.
Platform: fix WindowlessGlxApplication context creation and destruction.

The variable wasn't initialized so it exited with assertion failure,
moreover the context wasn't deleted on destruction, causing memory leak.
DebugTools: saner default color.

Default framebuffer clear color is black, thus having black debug
renderers by default isn't much useful.
Math: cleaned up plane/line intersection.

The function now accepts starting point and direction of the line (not
starting and ending point). Also improved the documentation and test a
bit.
Math: more Intersection test cleanup.