Fix decode_cf_variable, without tests
Merge pull request #154 from akleeman/fix-decode-no-tests

Fix decode_cf_variable, without tests
Change np.isnan to pd.isnull in conventions.py to handle _FillValue = ''

At a number of spots in conventions.py, np.isnan was being used
to check possible fill values.  However, np.isnan is not implemented
for string types.  So, I've replaced np.isnan with pd.isnull.

Alas, I haven't been able to update the tests to cover _FillValue = '',
because doing so would involve significant changes throughout the
code base.
Merge pull request #162 from ToddSmall/fill-value

Change np.isnan to pd.isnull in conventions.py to handle _FillValue = ''
BUG: fix encoding issues (array indexing now resets encoding)

Fixes #156, #157

To elaborate on the changes:

1. When an array is indexed, its encoding will be reset. This
   takes care of the invalid chunksize issue. More generally, this
   seems like the right choice because it's not clear that the right
   encoding will be the same after slicing an array, anyways.
2. If an array has `encoding['dtype'] = np.dtype('S1')` (e.g., it
   was originally encoded in characters), it will be stacked up to
   be saved as a character array, even if it's being saved to a
   NetCDF4 file. Previously, the array would be cast to 'S1' without
   stacking, which would result in silent loss of data.
Fix string encoding test on Python 3
Use a contextmanager for roundtripping in test_backends

With the current implementation, it looks like might end up deleting
the path to files opened with netCDF4 before we are done looking
at the values, because roundtrip (for netCDF4) returned after exiting
the create_tmp_file context manager. I'm actually not entirely sure
how we managed to get away with that...
Merge pull request #163 from shoyer/encoding-fixes

BUG: fix encoding issues (array indexing now resets encoding)
Cleanup/reorg of conventions.encode_cf_variable

Related: #162
Properly handle string arrays with missing values

Fixes #120

Serialization to disk for dtype=object arrays filled with string
variables and missing values marked by np.NaN now works.

Note: there are still bunch of failing tests on Python 3 to resolve.
Fix failing string fillvalue tests for py3k
Cast encoding['dtype'] to np.dtype
Merge pull request #165 from xray/cleanup-conventions

WIP: cleanup conventions.encode_cf_variable
Rename xray.Coordinate to xray.Index

Fixes #142.
Rename indexed, labeled, select to isel, sel, select_vars

Also renamed unselect to drop_vars.

The logic behind these changes is that it would be really nice
to have a short method for indexing by dimension name, since this
is one of the most common operations one might do. Also, prefacing
an indexing method with "i" nicely mirrors how pandas names its
indexing methods/properties -- now it's clear that "sel" and "isel"
are variants of each other.

Fixes #148.
Merge pull request #161 from shoyer/renamings

Rename "Coordinate", "labeled" and "indexed"
Fix pickle for Dataset objects

Fixes #167

Related: #166 (though I'm not sure why that didn't work)
Merge pull request #168 from shoyer/fix-pickle

Fix pickle for Dataset objects
Minor cleanups to groupby

More validation, tweaked a few names

Fixes #158
Clean up lingering references to "Coordinate"