Refactored xray.variable internals

All the indexing_mode logic has been moved from `Variable` into
`NumpyArrayAdapter`, and much of the special logic from `Coordinate` has been
moved into `PandasIndexAdapter`. The resulting classes are more modular and
should be simpler to modify/extend.

The API (even for other parts of xray) is unchanged.

Fixes #101.
xray.Variable now always pickles (by loading data into memory)

At some point we may want to revisit how this works but this seems like a
reasonable choice for now. Potentially, it could be higher performance to
pickle lazy arrays, but there isn't a straightforward way to do this unless
it's supported by upstream libraries like netCDF4-python.

Fixes #24.