title: numpy.concatenate on record arrays fails when array has different length strings
body: <p>When trying to concatenate record arrays which has a field of dtype string but has different length, concatenation fails.</p>
  
  <p>As you can see in the following example, concatenate works if 'f1' is of same length but fails, if not.</p>
  
  <pre><code>In [1]: import numpy as np
  
  In [2]: a = np.core.records.fromarrays( ([1,2], ["one","two"]) )
  
  In [3]: b = np.core.records.fromarrays( ([3,4,5], ["three","four","three"]) )
  
  In [4]: c = np.core.records.fromarrays( ([6], ["six"]) )
  
  In [5]: np.concatenate( (a,c) )
  Out[5]: 
  array([(1, 'one'), (2, 'two'), (6, 'six')], 
        dtype=[('f0', '&lt;i8'), ('f1', '|S3')])
  
  In [6]: np.concatenate( (a,b) )
  ---------------------------------------------------------------------------
  TypeError                                 Traceback (most recent call last)
  
  /u/jegannas/&lt;ipython console&gt; in &lt;module&gt;()
  
  TypeError: expected a readable buffer object
  </code></pre>
  
  <p>But, again if we just concatenate the arrays (not the records), it succeeds, though strings are of different size.</p>
  
  <pre><code>In [8]: np.concatenate( (a['f1'], b['f1']) )
  Out[8]: 
  array(['one', 'two', 'three', 'four', 'three'], 
        dtype='|S5')
  </code></pre>
  
  <p>Is this a bug in concatenate when concatenating records or is this the expected behavior. I have figured only the following way to overcome this.</p>
  
  <pre><code>In [10]: np.concatenate( (a.astype(b.dtype), b) )
  Out[10]: 
  array([(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four'), (5, 'three')], 
        dtype=[('f0', '&lt;i8'), ('f1', '|S5')]
  </code></pre>
  
  <p>But the trouble here is that I have to go through all the recarrays, I am concatenating and find the largest string length and I have to use that. If I have more than one string columns in the record array, I need to keep track of a few other things too.</p>
  
  <p>What do you think is the best way to overcome this, at least for now?</p>