added evaluateAtWavelength() directly to GSObject and using duck typing instead of checking for GSObject with hasattr in chromatic.py
(#467)
made path to example data more robust
(#467)