Fix issue with broadcast_arrays() and user defined dtypes

broadcast_arrays() does not handle struct and custom dtypes correctly. Dtype of returned broadcasted arrays is always '|V8'. Fix broadcast_arrays() so that dtype of returned arrays is correct dtype for user defined dtypes.
Add test
Merge pull request #3323 from ContinuumIO/broadcast_arrays_fix

Broadcast arrays fix