Refactor connect four `game_over?`

This is another case where it helps to move the heavy lifting (things like finding diagonals from a certain point) out of the main method. Also, while things like `col`, `cols`, and `cell` might seem silly, it lets you forget about the actual representation of the board.