title: DataFrame.apply(func) doesn't work when return is dict
body: <p>Can I pass a function that returns a <code>dict</code> to  <code>DataFrame.apply</code>?</p>
  
  <p>I am trying to create a new column in <code>df</code>, that will have <code>dict</code> objects, or <code>Series</code>. However, when I try it, I am getting unexpected results:</p>
  
  <pre class="lang-py prettyprint-override"><code>In [1]: import pandas as pd
  
  In [2]: df = pd.DataFrame({'a':[1,2,3,4], 'b':[9,8,7,6]})
  
  In [3]: def df_addition(row):
     ...:         sum = row['a'] + row['b']
     ...:         return {'sum': sum}
     ...:
  
  In [4]: df.apply(df_addition, axis=1)
  Out[4]:
      a   b
  0 NaN NaN
  1 NaN NaN
  2 NaN NaN
  3 NaN NaN
  
  In [5]: df_addition(df.irow(0))
  Out[5]: {'sum': 10}
  
  In [6]: df.apply(lambda row: pd.Series(df_addition(row)), axis=1)
  Out[6]:
     sum
  0   10
  1   10
  2   10
  3   10
  </code></pre>