Viewshed implementation

Implements #677