Fix uninitialized HMD warping coefficient

The HMD warping shader uses the cubic warping coefficient, but we weren't
initializing it. This fix ensures it's set to zero in both HMD backends.

It's unsatisfying to force the GPU to perform a calculation using a value that
is known to be zero. We'd squeeze out a few cycles by eliminating the cubic
term from the shader. But it's there in the Oculus code, so we better keep it
here.

Oculus is *really* inconsistent in its handling of distortion coefficients.
The shader reads four, but the library writes three. Meanwhile, the device
itself reports six! The Oculus SDK avoids inconsistency by memsetting the
entire array to 0.

Props @parasti for uncovering this flaw.
Factor out material file loader
Implement a material cache
Add material reloading (F7 in cheat mode)
Further flesh out shared render state identity
Implement configurable lights

The default parameters are still hardcoded. The config file is read on
F7 in cheat mode. It's meant for tweaking values, not permanent
configuration.
Add ambient lighting from scene lights
Adjust materials for new lighting
Render different-valued coins as separate SOL models

This is heavy stuff, but gives us full control over coin
materials. This commit also makes use of that and fixes coin materials
for new lighting.
Rework grow/shrink items
Make item OBJs have unit size and scale them by radius at draw time
Infer particle burst colors from item materials
Decouple material object loading/deletion from material system setup

This also fixes a crash on loading a map passed on the command line.