nebulagen: split volumelighting into separate class
util/glm_opts: generalized upcast/downcast operations