Make Array a templated struct, and merge with ArrayBase