GL3 cleanup

-Fixes lights in GL3.
-Adds caching to uniforms (except matrices). Greatly increases the speed.
-Fixes get_timer() so it returns the time while it is actually called.