Enhanced ArrayRef
Added a non-explicit constructor also for std::array, so we can
use ArrayRef more often as a view of memory.
Most clients need to know that the storage has a starting pointer, is
contiguous, and has a given size, but doesn't care e.g. whether it can
be resized or inserted into. The interface for such clients should
express that, so we avoid ripples all over the code base when someone
finds a reason to switch between std::vector, std::array or perhaps
something custom.
Change-Id: I98d96281ab324f2c0d3d3188810295d0027e5fe5