Table.rename does not rename keys of Row items
Looks like Table.rename() calls Table.fork(), which calls Table.**init**() with _is_fork=True which skips the code in this if block. Because of that, the _keys attribute of each Row instance retains the old values.

diff --git a/agate/table.py b/agate/table.py
index 994cf52..2ce29c2 100644
--- a/agate/table.py
+++ b/agate/table.py
@@ -285,8 +285,14 @@ class Table(utils.Patchable):
 
         if isinstance(row_names, dict):
             row_names = [row_names[name] if name in row_names else name for name in self.row_names]
-
-        return self._fork(self.rows, column_names, self._column_types, row_names=row_names)
+        
+        if column_names is not None and column_names != self.column_names:
+            if row_names is None:
+                row_names = self._row_names
+                
+            return Table(self.rows, column_names, self.column_types, row_names=row_names, _is_fork=False)
+        else:
+            return self._fork(self.rows, column_names, self._column_types, row_names=row_names)
 
     @classmethod
     def from_csv(cls, path, column_names=None, column_types=None, row_names=None, header=True, **kwargs):
diff --git a/tests/test_table.py b/tests/test_table.py
index 615b7e7..246b7e8 100644
--- a/tests/test_table.py
+++ b/tests/test_table.py
@@ -1723,6 +1723,14 @@ class TestData(AgateTestCase):
 
         self.assertIs(table.row_names, None)
         self.assertSequenceEqual(table.column_names, self.column_names)
+    
+    def test_rename_column_names_renames_row_values(self):
+        table = Table(self.rows, self.column_names, self.column_types)
+        new_column_names = ['d', 'e', 'f']
+        table2 = table.rename(column_names=new_column_names)
+        for row, row2 in zip(table.rows, table2.rows):
+            for key, key2 in zip(self.column_names, new_column_names):
+                self.assertEqual(row[key], row2[key2])
 
 
 class TableHTMLParser(html_parser.HTMLParser):
['agate/table.py', 'tests/test_table.py']