grid api

Is this scenario confusing?

`py.grid_ops.append_columns([new_col], grid=grid)` --> implicitly adds new col
`py.grid_ops.append_columns([new_col], grid_id=grid.id)` --> no new col

that seems a little tough to see what's going on there.