add basic csg for dda

This adds Constitutive Solid Geometry (csg) as an option for describing nonspherical scatterers. This lets you do things like union or difference of scatterers. It is useful, for example, to model scattering from a pacman particle as the difference of two spheres.