Serialize non-index coordinates to netCDF files

Fixes GH231

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.