title: Dask inconsistent behavior when column order differs between meta and individual DataFrames
body: <p>I'm building a dataframe from <code>delayed</code> objects which returns individual (pandas) dataframes and I provide the <code>meta</code> to the <code>from_delayed</code> call.</p>
  
  <p>It happened that the column order returned by the delayed objects didn't match the one provided in the <code>meta</code>.</p>
  
  <p>In that case, dask would get confused and mix up the data between the two ordering depending on the computation asked.</p>
  
  <p>e.g.:</p>
  
  <pre><code>import pandas as pd
  import dask.dataframe as dd
  from dask import delayed
  
  source = pd.DataFrame(
      columns=['(1)', '(2)', 'date', 'ent', 'val'],
      data=[range(i*5, i*5+5) for i in range(3)],
      index=range(3)
  )
  
  # Note the meta doesn't have the same ordering for columns
  meta = pd.DataFrame(
      columns=['date', 'ent', 'val', '(1)', '(2)'],
      data=[range(5)]
  )
  
  # This works
  ddf = dd.from_delayed([delayed(lambda: source)()], meta=meta)
  
  # one result
  ddf.compute()    
  # (1) | (2) | date | ent | val
  # --- | --- | ---- | --- | ---
  #  0  |  1  |  2   |  3  |  4
  #  5  |  6  |  7   |  8  |  9
  # 10  | 11  | 12   | 13  | 14
  
  # a very different one
  ddf.reset_index().compute()
  # index | date | ent | val | (1) | (2)
  # ----- | ---- | --- | --- | --- | ---
  #    0  |   0  |  1  |  2  |  0  |  0
  #    1  |   5  |  6  |  7  | 10  |  5
  #    2  |  10  | 11  | 12  | 20  | 10
  </code></pre>