1470 reduce user tables querying

@Kartones CR this, please. Dashboard tables/visualization request does half database queries with this changes, and some of them are at model level, so some improvement should be transversal. Most of changes are for avoiding double computations, and I think they're safe, but maybe you see something I shouldn't do.
The motivation is not recalculating it. `table` comes out from `visualization` (see line 12), and `permission` comes out from `visualization`. When we call `table_data_for` (line 42) we request again the permission, this time from `table.table_visualization`. I thought `visualization` and `visualization.table.table_visualization` where always, the same, so `visualization.permission` and `visualization.table.table_visualization.permission` also were the same.

If they're not, I still could reuse sent `permission` when `visualization.id == visualization.table.table_visualization.id`.