Added infection and visibility features. Tested them. They work.

Visibility and infection features are added and tested.
For lines 104-110, I had the thought before as well - can we make class level constants for "N", "E", "W", "S", "*"? The ranges could have an argument to be made constants somewhere as well, but I feel less strongly about them.