Restructured Backends to make CF convention application more
consistent.

Amongst other things this includes:
- EncodedDataStores which can wrap other stores and allow
  for modular encoding/decoding.
- Trivial indices ds['x'] = ('x', np.arange(10)) are no longer
  stored on disk and are only created when accessed.
- AbstractDataStore API change.  Shouldn't effect external users.
- missing_value attributes now function like _FillValue

All current tests are passing (though it could use more new ones).

Post rebase notes (shoyer, Oct 2, 2014):
Most tests are passing, though a couple are broken:
- test_roundtrip_mask_and_scale (because this change needs a fix to not
  break the current API)
- test_roundtrip_strings_with_fill_value on TestCFEncodedDataStore
  (I don't entirely understand why, let's come back to it later)
Fix reduce for 0d dataset variables
Implement count
Document count
Merge pull request #247 from shoyer/count

add count() method for missing values to Dataset and DataArray
Removed the object oriented encoding/decoding scheme in favor of
a model where encoding/decoding happens when a dataset is
stored to/ loaded from a DataStore.

Conventions can now be enforced at the DataStore level by
overwritting the Datastore.store() and Datastore.load() methods, or
as an optional arg to Dataset.load_store, Dataset.dump_to_store.

Includes miscelanous cleanup.
Responded to shoyer's comments
Documentation tweaks

* Took another pass through the quick overview and FAQ
* Reorganized the TOC
Merge pull request #249 from shoyer/doc-improvements

Documentation tweaks
Fix doc typo
Allow label based slicing with 0d data arrays
Merge pull request #250 from shoyer/fix-loc-with-dataarray

Allow label based slicing with 0d data arrays
abbreviate InMemoryDataStore.__init__
Fix failing tests without deps or not on Python 2.7
Merge pull request #245 from xray/modular-encoding-v2

Modular encodings (rebased)
Break down encoding into individual functions
Cleaner handling of missing_value in decode_cf_variable
Remove *args and **kwargs from load_store/dump_to_store
Remove *args and **kwargs from netCDF data stores
only make at most one copy during encoding