Enhanced support for modifying Dataset & DataArray properties in place

With this patch, it is possible to perform the following operations:

- `data_array.name = 'foo'`
- `data_array.coordinates = ...`
- `data_array.coordinates[0] = ...`
- `data_array.coordinates['x'] = ...`
- `dataset.coordinates['x'] = ...`
- `dataset.rename(..., inplace=True)`

It is no longer possible to set `data_array.variable = ....`, which was technically part of the public API but I would guess unused.