Sort the list in the order of the dictionary key.

        Example of use:

        >>> test = [
        ...    {"name": "Jim",   "age": 18, "income": 93000, "wigs": 68       },
        ...    {"name": "Larry", "age": 18,                  "wigs": [3, 2, 9]},
        ...    {"name": "Joe",   "age": 20, "income": 15000, "wigs": [1, 2, 3]},
        ...    {"name": "Bill",  "age": 19, "income": 29000                   },
        ... ]
        >>> print PLOD(test).sort("name").returnString()
        [
            {age: 19, income: 29000, name: 'Bill' , wigs: None     },
            {age: 18, income: 93000, name: 'Jim'  , wigs:        68},
            {age: 20, income: 15000, name: 'Joe'  , wigs: [1, 2, 3]},
            {age: 18, income: None , name: 'Larry', wigs: [3, 2, 9]}
        ]
        >>> print PLOD(test).sort("income").returnString()
        [
            {age: 18, income: None , name: 'Larry', wigs: [3, 2, 9]},
            {age: 20, income: 15000, name: 'Joe'  , wigs: [1, 2, 3]},
            {age: 19, income: 29000, name: 'Bill' , wigs: None     },
            {age: 18, income: 93000, name: 'Jim'  , wigs:        68}
        ]
        >>> print PLOD(test).sort(["age", "income"]).returnString()
        [
            {age: 18, income: None , name: 'Larry', wigs: [3, 2, 9]},
            {age: 18, income: 93000, name: 'Jim'  , wigs:        68},
            {age: 19, income: 29000, name: 'Bill' , wigs: None     },
            {age: 20, income: 15000, name: 'Joe'  , wigs: [1, 2, 3]}
        ]
        
        .. versionadded:: 0.0.2
        
        :param key:
           A dictionary key (or a list of keys) that should be the
           basis of the sorting.
        :param reverse:
           Defaults to False. If True, then list is sorted decrementally.
        :param none_greater:
           Defaults to False. If True, then entries missing the key/value
           pair are considered be of greater value than the non-missing values.
        :returns: self

def sort(self, key, reverse=False, none_greater=False):
        '''Sort the list in the order of the dictionary key.

        Example of use:

        >>> test = [
        ...    {"name": "Jim",   "age": 18, "income": 93000, "wigs": 68       },
        ...    {"name": "Larry", "age": 18,                  "wigs": [3, 2, 9]},
        ...    {"name": "Joe",   "age": 20, "income": 15000, "wigs": [1, 2, 3]},
        ...    {"name": "Bill",  "age": 19, "income": 29000                   },
        ... ]
        >>> print PLOD(test).sort("name").returnString()
        [
            {age: 19, income: 29000, name: 'Bill' , wigs: None     },
            {age: 18, income: 93000, name: 'Jim'  , wigs:        68},
            {age: 20, income: 15000, name: 'Joe'  , wigs: [1, 2, 3]},
            {age: 18, income: None , name: 'Larry', wigs: [3, 2, 9]}
        ]
        >>> print PLOD(test).sort("income").returnString()
        [
            {age: 18, income: None , name: 'Larry', wigs: [3, 2, 9]},
            {age: 20, income: 15000, name: 'Joe'  , wigs: [1, 2, 3]},
            {age: 19, income: 29000, name: 'Bill' , wigs: None     },
            {age: 18, income: 93000, name: 'Jim'  , wigs:        68}
        ]
        >>> print PLOD(test).sort(["age", "income"]).returnString()
        [
            {age: 18, income: None , name: 'Larry', wigs: [3, 2, 9]},
            {age: 18, income: 93000, name: 'Jim'  , wigs:        68},
            {age: 19, income: 29000, name: 'Bill' , wigs: None     },
            {age: 20, income: 15000, name: 'Joe'  , wigs: [1, 2, 3]}
        ]
        
        .. versionadded:: 0.0.2
        
        :param key:
           A dictionary key (or a list of keys) that should be the
           basis of the sorting.
        :param reverse:
           Defaults to False. If True, then list is sorted decrementally.
        :param none_greater:
           Defaults to False. If True, then entries missing the key/value
           pair are considered be of greater value than the non-missing values.
        :returns: self
        '''
        for i in range(0, len(self.table)):
            min = i
            for j in range(i + 1, len(self.table)):
                if internal.is_first_lessor(self.table[j], self.table[min], key, none_greater=none_greater, reverse=reverse):
                    min = j
            if i!=min:
                self.table[i], self.table[min] = self.table[min], self.table[i] # swap
                self.index_track[i], self.index_track[min] = self.index_track[min], self.index_track[i] # swap
        return self