IteratorsMD: remove ambiguity resolution for SharedArrays
IteratorsMD: handle 0-dimensional arrays properly
IteratorsMD: allow AbstractArray methods to be overriden

Any AbstractArray type that wants to override an indexing methods would
have formerly run into trouble:

    next{T,N}(A::SomeArrayType{T,N}, state::CartesianIndex{N})

would be more specific in the first argument, but (because
CartesianIndex{N} is less specific than CartesianIndex_$N) would be
less specific in the second argument. So there was no way to avoid
a method ambiguity warning.
IteratorsMD: document eachindex and add NEWS.md item
IteratorsMD: avoid ambiguity warnings by using more stagedfunctions

This also implements a way of handling 0-dimensional arrays that
doesn't require adding a field to a CartesianIndex_0.
IteratorsMD: small final fixes
Merge pull request #9057 from JuliaLang/teh/cartesian_iteration2

IteratorsMD: properly handle 0-dimensional arrays