Moved vertex formats out of shaders and into their own object. This matches more closely with the directx way of dealing with shaders (though is currently broken in directx). This required numerous changes to support the new format and as a result I finally removed ShaderPools entirely (They weren't really doing anything interesting).
Merge branch 'feature-input-layout' into develop
Set -Wall and -Werror, then cleaned up all errors