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.
I'm not sure what the best behavior is.  Because there is some utility (for testing) among other things to allowing "empty" compositions.  The FIXME here isn't a bug per se - it is just a note that we might want to do something different, but aren't sure yet.