I'm not sure about this new ```data``` group structure. It seems overly complicated and it isn't as clear or as simple as we had it defined in the code sprint google doc:

```
data/
  rows # 1D ndarray of unsigned integers 
  cols # 1D ndarray of unsigned integers  
  vals # 1D ndarray of floats
```

There are advantages to the above approach:

- conceptually simple
    - keeps the file format simple and easy to describe to others
    - uses a common sparse matrix storage technique
    - simpler design means less room for others to create invalid/nonsensical BIOM files
- fewer groups in the HDF5 file (though I'm not sure where this starts to break down)
- directly maps to scipy ```coo_matrix``` constructor (see [here](https://github.com/jrrideout/protobiom/blob/master/protobiom/hdf5.py#L27) for how simple the protobiom parser is)
    - there may also be performance issues with the new ```data``` design because you're having to manually iterate over things within Python to fish pieces out and build the matrix. In general, we should try to avoid this sort of thing wherever possible.
- less redundancy: the new ```data``` design stores sample IDs twice

We could stay with the simple row/col/val structure and keep an array of external links, similar to how we're storing ```samples/ids```. What do you think?