I think I got this to work, but it probably deserves a unit test to make sure.

I think the `real_space` option could probably be worked out if I wrote a `ChromaticObject.hasHardEdges()` method (or just tracked this as an attribute), but I haven't attempted this yet and just raised NotImplementedError instead.