Add agent to the next available spot in the grid.

        :returns:
            (x,y) of the agent in the grid. This is the agent's overall
            coordinate in the grand grid (i.e. the actual coordinate of the
            agent w.t.r **origin**).

        :raises: `ValueError` if the grid is full.

def add_to_grid(self, agent):
        '''Add agent to the next available spot in the grid.

        :returns:
            (x,y) of the agent in the grid. This is the agent's overall
            coordinate in the grand grid (i.e. the actual coordinate of the
            agent w.t.r **origin**).

        :raises: `ValueError` if the grid is full.
        '''
        for i in range(len(self.grid)):
            for j in range(len(self.grid[0])):
                if self.grid[i][j] is None:
                    x = self.origin[0] + i
                    y = self.origin[1] + j
                    self.grid[i][j] = agent
                    return (x, y)

        raise ValueError("Trying to add an agent to a full grid."
                         .format(len(self._grid[0]), len(self._grid[1])))