Added sophisticated (but slow…), occluding visibility calculations

Visiblility is now calculated by raytracing from the center to the edge
of a circle. The calculations were speeded up by using generators where
possible, but the delay introduced is noticable on autorepeat in open
spaces. Further improvements are required.