A Second look at Data Descriptors

I'm rolling through data descriptors:

Changes:

The following data descriptors adhere to an `extend/extend_chunks/iterchunks/__iter__` interface using Python objects and DyND arrays

*    `CSV`
*    `JSON`
*    `HDF5` (new, uses `h5py`)
*   `SQL` (new, uses `sqlalchemy`)

Note that this displaces two existing implementations

* The old `HDF5_DDesc` has been moved to `PyTables_DDesc`
* The old `SQL_DDesc` in `io/sql` is still there

This also leaves behind several data descriptors that were not in common use (membuf, streaming, concatenation).  I intend to retire these in a future PR unless someone points me to why they're very important.  They significantly increase inertia in this module.  I think that the four that I've highlighted, along with the DyND array itself, form a nice base with which to experiment.

In addition CSV and JSON are now significantly more robust.  Not so robust that I would show them off to anyone though, we should test this system heavily.

Generally we now support file creation as well as reading.  This allows for easy transfer of data from one format to another.

I start using abstract operations `validate` and `coerce`.  We should develop these and advance them up the namepspace.

Tasks for Matt

- [x] rip out toolz
- [x] rip out function based unit tests
- [x] clean up h5py, pytables mismatch in HDF5_DDesc

Everyone needs to think about this.

- [ ] Decide on append/extend/append-chunks/extend-chunks interface

A good job for @mwiebe and dynd

- [ ] Efficient chunked implementations for streaming-json and csv?

Wait for future testing PR

- [ ] Support and test datetime serialization
- [ ] Test unicode
- [ ] Test for graceful exception handling in poor cases (want biggeer dataset for tests)

Lingering issues

- [ ] New HDF5 DDesc causes segfaults on my machine when tested but not in interactive use.  Not sure what's going on.