Shader Hook

Creates a hook for Minecraft's internal shader engine, which is used for the "Super Secret Settings"

Hopefully I didn't just fuck up, but you may want to confirm the changes before actually pulling. Here's some example code using the new hook that switches to a custom shader (not writing out an entire new mod for this, just assume this is in some sort of event handler or something):

```java
Minecraft mc = Minecraft.getMinecraft();
ResourceLocation[] rls = new ResourceLocation[]{new ResourceLocation(StringLibrary.MOD_ID + ":shaders/post/shaderTest.json")};
ResourceLocation[] tmp;
tmp = EntityRenderer.swapResourceLocations(rls);
EntityRenderer.setShaderIndex(0);
//Wait until next render/update cycle before calling next method
EntityRenderer.swapResourceLocations(tmp); //Switch back so that the button never gets access to the current ShaderGroup (meaning no cycling through the new ones).
```

And here is the version for adding new shaders to the shaderResourceLocations array (registered to the "Super Secret Settings" button):

```java
Minecraft mc = Minecraft.getMinecraft();
ResourceLocation[] rls = new ResourceLocation[]{new ResourceLocation(StringLibrary.MOD_ID + ":shaders/post/shaderTest.json")};
EntityRenderer.appendResourceLocations(rls);
//You can go directly to the shaders, or just let them cycle through with the button.
```

I did not know how to go about testing all of these changes (I imagine I'd have to make some custom arguments to `gradlew` for it to use my GitHub repo), so I once again recommend that you try patching my changes before pulling. As far as I can tell, this should all be in order, but there's a chance I made a mistake.
As above