title: Getting boolean pandas column that supports NA/ is nullable
body: <p>How can I create a pandas dataframe column with dtype bool (or int for that matter) with support for Nan/missing values?</p>
  
  <p>When I try like this:</p>
  
  <pre><code>d = {'one' : np.ma.MaskedArray([True, False, True, True], mask = [0,0,1,0]),
  'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
  df = pd.DataFrame(d)
  print (df.dtypes)
  print (df)
  </code></pre>
  
  <p>column <code>one</code>  is implicitly converted to object. Likewise similar for <code>ints</code>:</p>
  
  <pre><code>d = {'one' : np.ma.MaskedArray([1,3,2,1], mask = [0,0,1,0]),
  'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
  df = pd.DataFrame(d)
  print (df.dtypes)
  print (df)
  </code></pre>
  
  <p><code>one</code> is here implicitly converted to <code>float64</code>, and I'd prefer if I stayed in <code>int</code> domain and not handle floating point arithmetic with its idiosyncrasies (always have tolerance when comparing, rounding errors, etc.) </p>