Adds a rule to the grid. The row and column numbers are
        those on the top left of the corresponding cell in the
        grid. So if the grid is 10x10, then the right hand edge of the
        grid will be column 10, and the bottom will be column 10. In
        other words there is one more rule-row and column than there
        are cell rows and columns.

def add_rule(self, start_col, start_row, end_col, end_row,
                 width=0.5, color=(0,0,0)):
        """Adds a rule to the grid. The row and column numbers are
        those on the top left of the corresponding cell in the
        grid. So if the grid is 10x10, then the right hand edge of the
        grid will be column 10, and the bottom will be column 10. In
        other words there is one more rule-row and column than there
        are cell rows and columns."""
        self.rules.append(
            (start_col, start_row, end_col, end_row, width, color)
            )