Incrementally number a key based on the current order of the list.

        Please note that if an entry in the list does not have the specified
        key, it is NOT created (unless insert=True is passed). The entry is,
        however, still counted.

        Example of use:

        >>> test = [
        ...    {"name": "Jim",   "age": 18, "income": 93000, "order": 2},
        ...    {"name": "Larry", "age": 18,                  "order": 3},
        ...    {"name": "Joe",   "age": 20, "income": 15000, "order": 1},
        ...    {"name": "Bill",  "age": 19, "income": 29000},
        ... ]
        >>> print PLOD(test).renumber("order", start=10).returnString(honorMissing=True)
        [
            {age: 18, income: 93000, name: 'Jim'  , order: 10},
            {age: 18,                name: 'Larry', order: 11},
            {age: 20, income: 15000, name: 'Joe'  , order: 12},
            {age: 19, income: 29000, name: 'Bill'            }
        ]
        >>> print PLOD(test).renumber("order", increment=2, insert=True).returnString(honorMissing=True)
        [
            {age: 18, income: 93000, name: 'Jim'  , order: 1},
            {age: 18,                name: 'Larry', order: 3},
            {age: 20, income: 15000, name: 'Joe'  , order: 5},
            {age: 19, income: 29000, name: 'Bill' , order: 7}
        ]
        
        .. versionadded:: 0.1.2
        
        :param key:
            The dictionary key (or cascading list of keys) that should receive
            the numbering. The previous value is replaced, regardles of type
            or content. Every entry is still counted; even if the key is missing.
        :param start:
            Defaults to 1. The starting number to begin counting with.
        :param increment:
            Defaults to 1. The amount to increment by for each entry in the list.
        :param insert:
            If True, then the key is inserted if missing. Else, the key is not
            inserted. Defaults to False.
        :returns: self

def renumber(self, key, start=1, increment=1, insert=False):
        '''Incrementally number a key based on the current order of the list.

        Please note that if an entry in the list does not have the specified
        key, it is NOT created (unless insert=True is passed). The entry is,
        however, still counted.

        Example of use:

        >>> test = [
        ...    {"name": "Jim",   "age": 18, "income": 93000, "order": 2},
        ...    {"name": "Larry", "age": 18,                  "order": 3},
        ...    {"name": "Joe",   "age": 20, "income": 15000, "order": 1},
        ...    {"name": "Bill",  "age": 19, "income": 29000},
        ... ]
        >>> print PLOD(test).renumber("order", start=10).returnString(honorMissing=True)
        [
            {age: 18, income: 93000, name: 'Jim'  , order: 10},
            {age: 18,                name: 'Larry', order: 11},
            {age: 20, income: 15000, name: 'Joe'  , order: 12},
            {age: 19, income: 29000, name: 'Bill'            }
        ]
        >>> print PLOD(test).renumber("order", increment=2, insert=True).returnString(honorMissing=True)
        [
            {age: 18, income: 93000, name: 'Jim'  , order: 1},
            {age: 18,                name: 'Larry', order: 3},
            {age: 20, income: 15000, name: 'Joe'  , order: 5},
            {age: 19, income: 29000, name: 'Bill' , order: 7}
        ]
        
        .. versionadded:: 0.1.2
        
        :param key:
            The dictionary key (or cascading list of keys) that should receive
            the numbering. The previous value is replaced, regardles of type
            or content. Every entry is still counted; even if the key is missing.
        :param start:
            Defaults to 1. The starting number to begin counting with.
        :param increment:
            Defaults to 1. The amount to increment by for each entry in the list.
        :param insert:
            If True, then the key is inserted if missing. Else, the key is not
            inserted. Defaults to False.
        :returns: self
        '''
        result = []
        counter = start
        if insert:
            self.addKey(key, 0)
        for row in self.table:
            if internal.detect_member(row, key):
                row = internal.modify_member(row, key, counter)
            result.append(row)
            counter += increment
        self.table = result
        return self