Return entries where the key is present.

        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": None , "wigs": [1, 2, 3]},
        ...    {"name": "Bill",  "age": 19, "income": 29000                   },
        ... ]
        >>> print PLOD(test).hasKey("income").returnString()
        [
            {age: 18, income: 93000, name: 'Jim' , wigs:        68},
            {age: 20, income: None , name: 'Joe' , wigs: [1, 2, 3]},
            {age: 19, income: 29000, name: 'Bill', wigs: None     }
        ]
        >>> print PLOD(test).hasKey("income", notNone=True).returnString()
        [
            {age: 18, income: 93000, name: 'Jim' , wigs:   68},
            {age: 19, income: 29000, name: 'Bill', wigs: None}
        ]
        
        .. versionadded:: 0.1.2
        
        :param key:
           The dictionary key (or cascading list of keys) to locate.
        :param notNone:
           If True, then None is the equivalent of a missing key. Otherwise, a key
           with a value of None is NOT considered missing.
        :returns: self

def hasKey(self, key, notNone=False):
        '''Return entries where the key is present.

        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": None , "wigs": [1, 2, 3]},
        ...    {"name": "Bill",  "age": 19, "income": 29000                   },
        ... ]
        >>> print PLOD(test).hasKey("income").returnString()
        [
            {age: 18, income: 93000, name: 'Jim' , wigs:        68},
            {age: 20, income: None , name: 'Joe' , wigs: [1, 2, 3]},
            {age: 19, income: 29000, name: 'Bill', wigs: None     }
        ]
        >>> print PLOD(test).hasKey("income", notNone=True).returnString()
        [
            {age: 18, income: 93000, name: 'Jim' , wigs:   68},
            {age: 19, income: 29000, name: 'Bill', wigs: None}
        ]
        
        .. versionadded:: 0.1.2
        
        :param key:
           The dictionary key (or cascading list of keys) to locate.
        :param notNone:
           If True, then None is the equivalent of a missing key. Otherwise, a key
           with a value of None is NOT considered missing.
        :returns: self
        '''
        result = []
        result_tracker = []

        for counter, row in enumerate(self.table):
            (target, _, value) = internal.dict_crawl(row, key)
            if target:
                if notNone==False or not value is None:
                    result.append(row)
                    result_tracker.append(self.index_track[counter])
        self.table = result
        self.index_track = result_tracker
        return self