Clean up indexing, take 2

This is a reimplementation getindex/setindex! based on the
implementation in Base. nd indexing now works, as does setting part
of a DataArray to be another DataArray that contains NAs.

Performance of a[1:end] = a[1:end] is roughly 2x Base. I think this
could still be improved by hoisting loads of the fields of the
DataArray/PooledDataArray, but I need to see if that's possible without
making the code substantially more complicated.

Indexing with a DataArray that contains NAs now throws. I removed
some tests that were testing indexing operations that now throw a
BoundsError. (These indexing operations also throw a BoundsError on
Arrays.)