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.)
Performance improvements for new indexing implementation

- Extract fields from DataArray and PooledDataArray before looping.
  This avoids checking repeatedly for undefined references.
- Keep the whole pool for getindex for PooledDataArray.
- Faster setindex! for a PooledDataArray into another PooledDataArray.
Fix indexing bugs and add more comprehensive tests
Reorganize indexing functions, remove inline getindex/setindex! docs
One more PooledDataArray optimization
Use setindex! to implement append!
Merge pull request #104 from JuliaStats/sjk/indexing2

Clean up indexing, take 2