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)
Doing that would get a little awkward since the encoding is now embedded within a store, so arguments to the encoder are passed into the DataStore constructor.  As a result the mixin class would need to implement a constructor which stored arguments which are intended for the encoder, and the DataStore that extends the mixin would need to distinguish between arguments intended for the store/mixin. Doing this in any sort of automated way leads to the nasty bit of logic (encoding_decorator) that I just removed.

One alteration which might make that all less nasty is to have any encoding/decoding arguments be directly passed into DataStore store/load.  Though, in the interest of not further bloating this PR I'd like to save that future change.