Alignment ops with irregular DatetimeIndex performance problems
Improperly boxing time stamps:

```
%prun -s cumulative result = left + right

         1000435 function calls (1000434 primitive calls) in 4.870 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    4.870    4.870 <string>:1(<module>)
        1    0.000    0.000    4.870    4.870 series.py:62(wrapper)
        1    0.000    0.000    4.866    4.866 series.py:1824(align)
        1    0.000    0.000    4.856    4.856 index.py:1561(join)
        1    0.001    0.001    4.856    4.856 index.py:710(join)
        1    0.254    0.254    4.778    4.778 index.py:1542(union)
        1    0.076    0.076    4.524    4.524 index.py:418(union)
        1    0.000    0.000    2.767    2.767 index.py:1830(__iter__)
        1    0.000    0.000    2.767    2.767 index.py:1464(asobject)
        1    0.203    0.203    2.767    2.767 datetools.py:34(_dt_box_array)
   500000    0.215    0.000    2.564    0.000 datetools.py:41(<lambda>)
   500000    2.349    0.000    2.349    0.000 datetools.py:28(_dt_box)
        1    0.000    0.000    0.901    0.901 index.py:473(_wrap_union_result)
        1    0.010    0.010    0.901    0.901 index.py:1197(__new__)
       18    0.890    0.049    0.890    0.049 {numpy.core.multiarray.array}
       16    0.000    0.000    0.890    0.056 numeric.py:167(asarray)
        1    0.743    0.743    0.743    0.743 {method 'sort' of 'list' objects}
        3    0.000    0.000    0.108    0.036 index.py:597(get_indexer)
        3    0.106    0.035    0.106    0.035 {method 'get_indexer' of 'pandas._engines.DatetimeEngine' objects}
        2    0.000    0.000    0.010    0.005 series.py:1860(_reindex_indexer)
        2    0.000    0.000    0.009    0.005 common.py:170(take_1d)
        2    0.007    0.004    0.007    0.004 {pandas._tseries.take_1d_float64}
        1    0.004    0.004    0.004    0.004 {method 'nonzero' of 'numpy.ndarray' objects}
        2    0.000    0.000    0.003    0.001 index.py:1866(equals)
        2    0.003    0.001    0.003    0.001 numeric.py:1927(array_equal)
        2    0.000    0.000    0.002    0.001 common.py:666(_ensure_int32)
        2    0.002    0.001    0.002    0.001 {method 'astype' of 'numpy.ndarray' objects}
        1    0.000    0.000    0.002    0.002 series.py:47(na_op)
        1    0.002    0.002    0.002    0.002 {operator.add}
       13    0.000    0.000    0.001    0.000 index.py:1858(dtype)
       18    0.000    0.000    0.001    0.000 _internal.py:180(_datetimestring)
       18    0.001    0.000    0.001    0.000 {method 'match' of '_sre.SRE_Pattern' objects}
        1    0.001    0.001    0.001    0.001 {method 'take' of 'numpy.ndarray'
```
