performance of DataFrame.corrwith vs raw apply
For the following example I see corrwith performing considerably more slowly than doing a "raw" apply of np.corrcoef, with the tip code as of 2013-12-08:

```
s = pd.Series(np.arange(4096.))
df = pd.DataFrame({i:i + np.arange(3360.) for i in range(4096)})

%timeit -n 3 df.apply((lambda x: np.corrcoef(x.values, s.values)[0, 1]), axis=1)
3 loops, best of 3: 942 ms per loop

%timeit -n 3 df.corrwith(s, axis=1)
3 loops, best of 3: 1.64 s per loop
```

From comments on #5654 and the forums I would not have expected this to be slower, but it seems corrwith is just turning around and doing an "apply" itself, with some extra conditioning that seems to add significant overhead.
