* allow transform to work with arrays. The element_type trait required pointer_traits<T> to be defined for the type which it was for vector but not for array due to decay rules in C++, even though it was not used. So Element type had to be split into two templates instead of a conditional.
* fix formatting
* clean up array initialization
* add constexpr array test
* add extra braces to make clang happy