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.
This should wait for CEP23 implementation because it will need to change for that anyway (among many other small changes).  I anticipate that happening before the next release and would rather all those changes be together.