Efficient get_dim_size for arbitrary dimensions

This implements an efficient method get_dim_size(i) to get an individual dimension, as discussed at https://github.com/ContinuumIO/libdynd/issues/78
Yes, I think the following more verbose idiom should be faster:

```
  dynd::dimvector shape(i + 1);
  if (!get_ndo()->is_builtin_type()) {
    n.get_ndo()->m_type->get_shape(i + 1, 0, shape.get(),
                            n.get_arrmeta(), get_ndo()->m_data_pointer);
  } else { /* error */ }
```