Add basic functionality to Effects

- Doesn't work properly yet because there is no active context
- Manages the shader objects and the shader program object