Modular encodings (rebased)

This change is rebased on master and should let us pick up from #175. CC @akleeman 

-----------------

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)
and if not too difficult, it would be good to call out explicitly which stores handle which cases