File setup for the 3d api
Merge branch 'master' into libaudioverse3d
Merge branch 'master' into libaudioverse3d
Typedef for a matrix
Defined the internal matrix interfaces
Bunches of small stuff for matrices
Preliminary, complete matrix transform code
Made some tests and fixes to transform
Rework transform inverse
Matrix rotation inversion works
Matrix inversion appears to work
Convert to premultiplication
Camera matrices work.

Completely.  Really. The test proves it.
Clean up the matrix code a bit
Clean up the transform tests
Converted the matrix library to follow opengl conventions.
Hid the arrays needed for matrices behind structs.

This gets rid of some ugly code and memcpys, and makes it more library-ish.
Specifically, we can pass a struct by value but not an array, so by putting
the array in the struct, we can have read-only in parameters.
Set c99 on linux
Only set libsndfile paths on windows
Testing pushing from linux