Added better compression

Struct and function names get minimized too. #defines get inlined and
deleted from the source.
Works across an array of shaders, which are useful for when there is
shared shader code that needs to be taken into account by multiple
shaders so all the names will be equal.