Remove optional jemalloc dependency

Jemalloc and other alternative allocators can be injected at runtime using
LD_PRELOAD as long as libraries are dynamically linked to libc.
Apply active gui transform before pushing prims
Fix mat-vec multiply functions

If the "out" and "a" arguments of the multiply funcs were pointing
to the same arrays we'd get aliasing issues. Allocating a temporary
prevents this problem.
Rename umbrella project Tau -> Forge

Forge is now the official name for the project.
Remove sb_pop() function from stretchy_buffer.h

Was never really happy with the implementation and the way it was
being used in the library so remove sb_pop() for now. There may be
a time and place for it in the future.
Remove sb_pop() usage for IMGUI layout stack

Replace stretchy buffer for layout stack with a fixed-size buffer.
It is probably safe to assume the maximum depth of the stack although
it may be hard to predict the more complicated the GUI gets.
Fix hash table delete incorrectly filling the hole

Critical error meant that existing entries would no longer be
accessible because there was a gap between a keys "natural hash" and
the end of its cluster. A number of tests have been added to ensure
the fixed implementation is working as expected.
Fix linear probing not searching full hash table
Update stb_sprintf.h to v1.09
Add basic tests for vector and matrix types

Additionally fix the missing square root in the vecn_2norm() methods.
This was spotted thanks to the new unit tests!
Use flat arrays for matrix-types

Using flat arrays fixes a -Wpedantic warning we were getting whenever
we had a function that would receive a const matrix. The warning in
question stated "pointers to arrays with different qualifiers are
incompatible in ISO C". The const-ness was being applied to the inner
array, not the underlying real.

Making this change has also revealed a performance error in the
matrix-vector multiplication. The matrix elements are now accessed in
contiguous order to hopefully make the operation more cache efficient.

To facilitate this change I've added a couple extra get/set methods
for matrices that translate a column + row (2d) index to a 1d index.
Rename "scalar" typedef to "real"
Fix glslangValidator args for lang ver 10:11.0.0
Remove TODO file and update third-party licenses

Experimental migration to using self-hosted Kanboard instance for
project management and todo tracking.
Separate fill and border shapes in rect shader

In order to support separate translucent colors for the fill and border
of a shape in the rect shader, separate them into non-overlapping
distance functions. This introduces an artifact due to anti-aliasing,
but for the time-being we ignore it.
Use fwidth()-based anti-aliasing in rect shader
Maintain canvas translation on container resize

Compensate translation as scale pivot is moved when the canvas
container is resized.
Fix return-type warnings on load_x_program() funcs
Add support for zoom behavior on gui canvas layout

Update gui_canvas_begin() with scale component. Zoom is currently
hardcoded to use right-click-and-drag along x-axis.

Add -lm linkage for math header support.
Add support for circle primitives