Allow users to pass an index_path or array of index_paths to update_table_data.

When this is passed, it won't update the entire table data, but just the cell or cells that correspond to the index_path(s) passed.

Don't merge now. Just opening for discussion. Needs tests too.
@markrickert I just remembered about `.all?`. It beats mine and is cleaner.

```ruby
require 'benchmark'

iterations = 100_000

def array_all_members_of_mark(arr, kalss)
  unique_classes = arr.map(&:class).uniq
  (unique_classes.count == 1 && unique_classes.first == kalss)
end

def array_all_members_of_jamon(arr, klass)
  arr.select{ |e| e.is_a?(klass) }.length == arr.length
end

def array_all_members_of_ruby(arr, klass)
  arr.all?{ |e| e.is_a?(klass) }
end

TEST_ARRAY = ("A".."Z").to_a

Benchmark.bm do |bm|
  bm.report do
    iterations.times do
      array_all_members_of_mark(TEST_ARRAY, String)
    end
  end

  bm.report do
    iterations.times do
      array_all_members_of_jamon(TEST_ARRAY, String)
    end
  end

  bm.report do
    iterations.times do
      array_all_members_of_ruby(TEST_ARRAY, String)
    end
  end
end
```

```
       user     system      total        real
   1.100000   0.010000   1.110000 (  1.131239)
   0.350000   0.010000   0.360000 (  0.370683)
   0.300000   0.010000   0.310000 (  0.305338)
```