Deduce type from common_type<> rather than first argument

This changes the implementation of make_array() to deduce the
array type from the common_type<> of the arguments rather than
always using the type of the first argument.

Furthermore, this preserves the ability to specify an explcit
type for the array to override the type-deduction code.