Explicitly handle initing from empty arrays, and assign NULL or ""
Update TODO
Add some system attributes from GL
If semantic is empty and we have variable name, use that instead
Attempt to make separable shader prog, add input/output fetching

* Also moved shader reflection code into separate file