We had a few tests for the different ways to initialize a std::array
here and there, but they were split up and patchy in their coverage.
This patch improves that situation.
It also adds tests for the triviality and aggregate-ness of std::array.
Even though the Standard doesn't explicitly require it, libc++ has been
making std::array<T, N> trivial whenever T is trivial for any value of N.
The patch also adds tests checking that std::array<T, N> is an aggregate
for all values of N.