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