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...