coerce provides more informative error on bad datashape

```Python
In [1]: !head bad.csv
a,b
1,2
3,4
1,3.14

In [2]: from blaze import *

In [3]: csv = CSV('bad.csv', nrows_discovery=2)  # only look at the first couple of rows

In [4]: csv.dshape  # Note that we discover an incorrect datashape
Out[4]: dshape("var * { a : int64, b : int64 }")

In [5]: list(csv)
ValueError: DataShape mismatch.
DyND failed to parse data with the following datashape: 3 * { a : int64, b : int64 }
Produced the following error: cannot cast string "3.14" to int64
Consider providing a more general datashape with keyword dshape=
```