lazy decay option and misc cleanups and tweaks

* lazy decay option decays materials every time the Material::comp function is
  called.

* Added ability to call Material::Decay with a negative time argument that
  causes the decay operation to run with the material's context's current
  time.  Throws if the material has a NULL context.

* fixed sim_init tests - they previously counted on optional normalization for
  material compositions that has now changed.  Note that API is identical -
  the doc comments for the relevant functions explicitly states that returned
  composition are not normalized.
If decay were not lazy, we would have expected decay to happen automatically after `RunSim()`, right? If so, can we check that it has *not* occurred?