Experimenting with techniques to support generic RenderBatches

It'd be much better if I could pass any list of types to the RenderBatch
and hand over the indices I want to be used. Perhaps we could assert out
if we ran into an attribute spilling over to another's index
Planning out how to auto-assign attributes and catch overflows
Re-thinking how to cleanly handle computing paddings for elements

Having a separate padder seems to work a lot more cleanly. I'll also be
migrating to this better method of storing the offsets in an array, ie.
AllOffset will replace Offset soon-ish once I fix all the issues I'm
introducing with this migration.
Fix the way padding is compute and add STD140 AllOffset
Remove Layout::ALIGNED since it's probably wrong layout anyways

Will only need/support packed and std140
Migrate over to array based offsets method
Add function to get offset by index and clean up model attrib setting
Hot shader reload is go!
Fix link order for lfwatch with SDL dependence

also clean up event debug logging since it's pointless spam
Migrate to callback based file watcher
Use const-ref callback for lfwatch
Also respond to window X button
Import the resource path resolver from the lessons
Testing a more complex model revealed some bugs in model loading

Was using the wrong indexing into the model which would work for models
without any shared vertices but fails for ones that do share vertices
since we go way out of bounds. Now use the proper loop and vbo size.

Also found a bug in the sizer for layout types where we would return the
size of the previous + sizeof the type when really we should just return
the size of the types passed and only use the previous size to compute
offsets to pad ourselves properly. This was causing the tex coords (the
last glm::vec3) to be at offset 36 when they should have been at 24
Merge branch 'experimental'