Feature visibility

Implements visibility and visibility spreading in the GridModel. Visibility changes are reflected in GridView as well, with code in place to prevent rotating invisible pipes. Currently displays invisible pipes as infected NESW pipes, as no image has been created. Includes tests for visibility at a GridModel level.
This line exceeds our 100-character width limit.