Add a JSON library (JsonCpp) to the project. JSON will be used as the intermediate data format for asset files.
Introducing the Interpreter. An .exe that converts .bmd/.bdl files to our intermediate JSON format. This conversion should only be run once, unless we decide to scrape more data out of the .bmd or change our scraping format (which should be uncommon, but I've added a version field to cover this).
Added -compile support to Engine.exe.
If you call the exe with -compile <some_filename>, it will attempt to parse the file as JSON and compile it to a binary blob based on the root:Info:type field. Compiling not yet implemented.

- Fixed warnings related to WARN() calls on release builds (empty if statements)
[Incremental] Compiler now handles batches, vertex buffers, and index buffers. This is pretty much untested, but it's late and I need to get it in.
Loading support for vertex and index buffers, as well as batches.

- Added section headers (fourcc and size) to the compiled blob
Removed all traces of the "Compile" project configuration

- Added necessary things to .gitignore
Rig app to draw vertex buffer for testing purposes. Temporarily add assets to the .vcxproj for easy compiling/building.

- Vertex buffers are compiling+loading correctly
Fixed only part of the vertex buffer being compiled into the blob due to mismatched vertex attributes
Fixed problems with Jnt,Drw, and Evp matrices being interpreted/compiled/loaded incorrectly. Still need to test EVP weights and indices.
Fixed evp matrix weights being compile to the binary as u16's instead of floats. Evp weights and indices are confirmed correct.
Load matrices (weighted or unweighted) into each patch's matrix table. These matrices are confirmed correct.

- Finished implementing evp weightedIndex compiling and loading
- Disable dbg heap tracking during the  compile() function to slightly speed up debug builds
Packet matrix array is now set correctly in the shader. Still need to apply the joint hierarchy in DrawScenegraph() before skeletized meshes will draw properly.
Added skeleton evaluation. Link's mesh now draws correctly (no material).

- Moved skeleton evaluation to it's own function, Update(). Removed joint code from DrawScenegraph()
- Parse explicit skeleton from scenegraph at compile time. Save joint's parent per-joint.
Added textures and samplerstates to the interpret/compile/load pipeline.
- Separated pointers that are only used for GFX initialization (and are only needed between load() and the first draw()) to their own structure so that we can reorganize easily later.
- All texture data for the model is now written out to "originalfilename.tex". Textures in the JSON store their offset into this file.
- Fixed bug in Framework3/Imaging/Image.cpp that prevented the parent from maintaining control of image memory.
Added full material support. Shader HLSL is included in the JSON file, but compiled at load time.

- Added HLSL synthesis functionality to Interpreter. HLSL is now written out to the JSON file
- Fixed missing nullptr initialization that causes failure (bad free()) when JSON parsing fails
- Fixed off-by-one error in tex1 that would skip the first texture and overflow
- Imported mat3 changes from BMDLoad to BMDRead
- renamed color1, color2, color3, colorS10 to more accurate names
- exposed GC3D functions to convert gc constants to Framework3 constants
Cleaned house. Removed all currently unused/unneeded code. (We can draw from the repo history if necessary)
Started knocking off TODO's.

- Added != and == methods to mat4
- Fixed all runtime memory leaks
- Added and partially implemented GDModel::Unload()
- Removed need for DirectX reference in  GDModel
- Moved GDModel structures into the cpp and out of the header
Fixed GetAttributeSize returning incorrect result due to int->float cast. Silly bug.
Fixed assigning incorrect parent matrices. This was a bug in the scenegraph traversal code. Link's eyes are now in the correct place!
Exit instead of crash if default asset cannot be loaded