This remove the complexity of queriying the locations at runtime and
allows for more performance and upfront binding specifications.
The motivation for this refactor is to fix T70445 and also simplify transition
to vulkan.
The benefit of doing everything at creation time is that we can assign binding
points in a predictable order which is going to be somewhat the same for
every similar shader.
In the future the samplers and ubo will have fixed positions set in shader
code. (this is required by vulkan)
This also rewrite GPU_vertformat_from_shader to not use shaderface.
This is to keep the shaderface simple. If it becomes necessary to not query
the shader after creation (i.e: vulkan?) we could just create the vert
format in advance at compilation for PyGPU shaders.
A cleanup of DRW is comming after this commit.