Changes that the shadow mapping is executed on a per-pixel basis (deferred) instead of per vertex in the chunk shader. This allows the application of shadows to all opaque objects in the scene (first person elements like the hand and blocks, dynamic blocks in the world, meshes, ...).

* Implicitly fixes that shadows were applied to transparent surfaces like water
* Fixes that the outline shader caused artifacts on shallow surfaces in the distance (the outline is now blended using the screen space normals y component)
* Adds some more cleanups here and there and a new shader helper method