Added hash map of shaders to BaseD3DShader

Now, any shader that uses the same function will get created only once
and be shared