Make ShaderManager an interface

Add Headless ShaderManager by making ShaderManager an interface.

One concern here is that the lwjgl version explicitly casts to the lwjgl GLSLMaterial.  I'm guessing this should be ok.

+    public void setActiveMaterial(Material material) {
+        // TODO: is this the best way to convert the material to the lwjgl version?  Do we need more checks?
+        GLSLMaterial glslMaterial = (GLSLMaterial)material;