added dead? method and refactored alive?
refactored out the rules
refactored initializing neighbor array
refactored state to be ALIVE and DEAD instead of true and false
refactored neighbors to be memoized compactly
refactored specs