Clean up ArraySlice<>.

Remove constructors that take ranges (one of them created
ambiguity with the constructor taking just the length) and
add SubArray() to serve as a replacement API.

Remove the AsRange() function as the translation to the
IterationRange<> seems totally unnecessary, we can simply
return ArraySlice<> from the functions that used it.

Remove the At() function as the comparison with the
std::vector<>::at() is confusing given that we do not
use C++ exceptions.

Add some standard container API, i.e. nested types and
more functions.

Test: m test-art-host-gtest
Test: testrunner.py --host
Change-Id: Ifcd39222cf8f36b7ebf8029398ed7fc67aafcaf0
5 files changed