append a new row to a DataRange

        :param row_key: a string
        :param value_list: a list

def row_append(self, row_key, value_list):
        """
        append a new row to a DataRange

        :param row_key: a string
        :param value_list: a list
        """
        if row_key in self._row_keys:
            raise KeyError('Key %s already exists in row keys.' % row_key)
        if not len(value_list) == len(self._col_keys):
            raise ValueError('Length of data to set does not meet expected row length of %i' % len(self._col_keys))
        self._row_keys.append(row_key)
        for c, v in zip(self._col_keys, value_list):
            self[row_key, c] = v