Let tables handle arbitrary objects

This resolves #1713

Specifically to support a clean syntax for tables built from Hashes,
this commit enables you to use the normal clean `column` and `row`
syntax like this:

```ruby
table_for foo: 1, bar: 2 do
  column :foo
  column :bar
end
```

Note that `dom_id_for`, which `attributes_table_for` was already using
but `table_for` wasn't, is definied by Arbre.