ENH: Add pipe method
Closes https://github.com/pydata/pandas/issues/10129

In the dev meeting, we settled on the following:
- `.pipe` will **not** include a check for `__pipe_func__` on the function passed in.
- To avoid messiness with lambdas when a function takes the DataFrame other than in the first position, users can pass in a `(callable, data_keyword)`  argument to `.pipe` (thanks @mwaskom)

``` python
   import statsmodels.formula.api as sm

   bb = pd.read_csv('data/baseball.csv', index_col='id')

   (bb.query('h > 0')
      .assign(ln_h = lambda df: np.log(df.h))
      # sm.possion expects `formula, data`
      .pipe((sm.poisson, 'data'), 'hr ~ ln_h + year + g + C(lg)')
      .fit()
      .summary()
   )
## -- End pasted text --
Optimization terminated successfully.
         Current function value: 2.116284
         Iterations 24
Out[1]:
<class 'statsmodels.iolib.summary.Summary'>
"""
                          Poisson Regression Results
==============================================================================
Dep. Variable:                     hr   No. Observations:                   68
Model:                        Poisson   Df Residuals:                       63
Method:                           MLE   Df Model:                            4
Date:                Tue, 02 Jun 2015   Pseudo R-squ.:                  0.6878
Time:                        20:57:27   Log-Likelihood:                -143.91
converged:                       True   LL-Null:                       -460.91
                                        LLR p-value:                6.774e-136
===============================================================================
                  coef    std err          z      P>|z|      [95.0% Conf. Int.]
-------------------------------------------------------------------------------
Intercept   -1267.3636    457.867     -2.768      0.006     -2164.767  -369.960
C(lg)[T.NL]    -0.2057      0.101     -2.044      0.041        -0.403    -0.008
ln_h            0.9280      0.191      4.866      0.000         0.554     1.302
year            0.6301      0.228      2.762      0.006         0.183     1.077
g               0.0099      0.004      2.754      0.006         0.003     0.017
===============================================================================
"""
```

Thanks everyone for the input in the issue.

---

This is mostly ready. What's a good name for the argument to `pipe`? I have `func` right now, @shoyer you had `target` in the issue thread. I've been using `target` as the keyword expecting the data, i.e. where the DataFrame should be pipe to.

The tests are extremely minimal... but so is the implementation. Am I missing any obvious edge-cases?

We'll see how this goes. I don't think I push `.pipe` as a protocol at all in the documentation, though we can change that in the future. We should be forwards-compatible if we do ever go down the `__pipe_func__` route.
