title: PyTables dtype alignment issue
body: <p>Consider the following code:</p>
  
  <pre><code>import os
  import numpy as np
  import tables as tb
  
  # Pass the field-names and their respective datatypes as
  # a description to the table
  dt = np.dtype([('doc_id', 'u4'), ('word', 'u4'), 
      ('tfidf', 'f4')], align=True)
  
  # Open a h5 file and create a table
  f = tb.openFile('corpus.h5', 'w')
  t = f.createTable(f.root, 'table', dt, 'train set',
      filters=tb.Filters(5, 'blosc'))
  
  r = t.row
  for i in xrange(20):
      r['doc_id'] = i
      r['word'] = np.random.randint(1000000)
      r['tfidf'] = rand()
      r.append()
  t.flush()
  
  # structured array from table
  sa = t[:]
  
  f.close()
  os.remove('corpus.h5')
  </code></pre>
  
  <p>I have passed in an aligned <code>dtype</code> object, but when I observe <code>sa</code>, I get the following:</p>
  
  <pre><code>print dt
  print "aligned?", dt.isalignedstruct
  print
  print sa.dtype
  print "aligned?", sa.dtype.isalignedstruct
  
  &gt;&gt;&gt; 
  
      {'names':['doc_id','word','tfidf'], 'formats':['&lt;u4','&lt;u4','&lt;f4'], 'offsets':[0,4,8], 'itemsize':12, 'aligned':True}
      aligned? True
  
      [('doc_id', '&lt;u4'), ('word', '&lt;u4'), ('tfidf', '&lt;f4')]
      aligned? False
  </code></pre>
  
  <p>The structured array is not aligned. Is there no current way to enforce alignment in PyTables, or what am I doing wrong?</p>
  
  <p>Edit: I've noticed my question is similar to <a href="https://stackoverflow.com/questions/20999229/pytables-table-dtype-alignment?rq=1">this one</a>, but I've copied and tried its provided answer, but it doesn't work either.</p>
  
  <hr>
  
  <p>Edit2: (See Joel Vroom's answer below)</p>
  
  <p>I've replicated Joel's answer and tested to see if it is truly unpacked through Cython. Turns out it is:</p>
  
  <pre><code>In [1]: %load_ext cythonmagic
  
  In [2]: %%cython -f -c=-O3
     ...: import numpy as np
     ...: cimport numpy as np
     ...: import tables as tb
     ...: f = tb.openFile("corpus.h5", "r")
     ...: t = f.root.table
     ...: cdef struct Word: # notice how this is not packed
     ...:     np.uint32_t doc_id, word
     ...:     np.float32_t tfidf
     ...: def main(): # &lt;-- np arrays in Cython have to be locally declared, so put array in a function
     ...:     cdef np.ndarray[Word] sa = t[:3]
     ...:     print sa
     ...:     print "aligned?", sa.dtype.isalignedstruct
     ...: main()
     ...: f.close()
     ...: 
  [(0L, 232880L, 0.2658001184463501) (1L, 605285L, 0.9921777248382568) (2L, 86609L, 0.5266860723495483)]
  aligned? False
  </code></pre>