Math: added uniform scaling extraction to Matrix[34].
Math: assert uniform scaling in Matrix[34]::rotation().

Needed to adjust the test cases slightly, because they were firing the
assert even if they shouldn't and the "expect fail" case wasn't working
at all. I now badly need proper floating-point equality comparison.
Math: added also Matrix[34]::uniformScalingSquared().

Usable to avoid square root and then squaring the value again in
spheroid collision detection algorithms.
Shapes: expect only uniform scaling for some primitives.

Capsule, Sphere and Plane would behave weirdly if non-uniform scale
would be applied to them. This restriction allows to use more performant
code (i.e. less normalization and matrix multiplication). Updated the
tests to verify that uniform scaling is handled well, for Capsule and
Sphere there is now also no need to test both 2D and 3D transformation.
Shapes: added TODO.
Shapes: added infinite cylinder shape.

Seems like an essential part of the toolbox -- we have Point, LineSegment
and Line and now we have also all "swept sphere" alternatives to them --
Sphere (swept "along" the point), Capsule (swept along line segment) and
Cylinder (swept along infinite line).

"Implemented" collision detection with point and sphere, which is just
simplified version of collision detection implemented for Capsule (i.e.
no need to check for cap cases).
Shapes: documentation for adding new shapes.

It's a lot of steps to rediscover.
Primitives: use half length also in Cylinder primitive.

Everything is now consistent.
DebugTools: support for Cylinder shape in ShapeRenderer.

The code is mostly copied and simplified from Capsule renderer. However,
it is such simplification that any attempt to reduce duplicate code
would result in much less maintainable thing.
DebugTools: use common segment/ring count for all spheroids.

Every circle should consist of 40 lines, i.e. sphere should have 40
segments and 20 rings, capsule should have 40 segments and 10 rings per
hemisphere (=20 rings total).
Don't forbid setting resources by copy/move.

It adds much more convenience. Only some resources can't be moved around
(i.e. those with someone pointing at them), which isn't excuse for
forbidding copy/move altogether.

Finally it is possible to do convenient things like this again:

    DebugTools::ResourceManager::instance()->set("red",
        DebugTools::ShapeRendererOptions().setColor({1.0f, 0.0f, 0.0f}));
Minor cleanup in tests.