Serialize non-index coordinates to netCDF files

Fixes #231 

This PR ensures non-index coordinates can be roundtripped to netCDF and back by using the CF convention of the 'coordinates' attribute on a "data variable".

In cases where there are no data variables available, we fall back to the (extended, non-CF) convention of saving 'coordinates' as a global attribute.

I also added the `xray.decode_cf` function to the API. This function can decode either datasets or datastores into decoded datasets, which is handy, for example, if a dataset is serialized according to CF conventions but already in memory (e.g., saved in JSON).

@akleeman: I could use some guidance from you on want to do about `test_roundtrip_coordinates` on `TestCFEncodedDataStore`. I am tentatively skipping it, but it would be nice to get it working. To do so will require some tweaks to the API for the `Datastore.load` method.