ArrayViews implementation branch

This is the original PR, which I prematurely merged. It's incomplete and has some work to go before it gets merged.