2D array describing each registered property
        together with headers - for use in __str__

def _gen_property_table(self):
        """
        2D array describing each registered property
        together with headers - for use in __str__
        """
        headers = ['Property Name', 'Type', 'Value', 'Default Value']

        table = []
        for propval in sorted(self._properties.itervalues(),
                              key=lambda pval: pval.name.upper()):
            table.append([propval.name,
                np.dtype(propval.dtype).name,
                getattr(self, propval.name),
                propval.default])

        return table, headers