internal/Graphics: Change shadow state

Pointer to shadow state now declared as extern in internal/Graphics
header. This will make the state trivially accessible to all
compilation units that require it and remove the need for accessor and
mutator methods.
internal/Graphics: Remove Get/Set locations API

Now the values can be explicitly set since the state pointer is included
in all files that need to access/change GL state
Shader: Clean up how shadow state is set in Bind

Shader manages its own internal array of locations for Bakge variables,
so we can just memcpy the array over into the shadow state.
Shader: Check shadow state before binding

Unbind has been reverted to simply Bind the generic shader again.
Might as well cache the program name of the default shader instead of
the zero-name, which is after all, incorrect
internal/Graphics: Shadow state caches buffer bindings
Crowd: Use internal BindBuffer wrapper
Use BindBuffer wrapper function in many modules
WaterSurface: Tweak ripple algorithm

Wavefronts get closer together as they travel away from the origin