ENH: axis keyword for groupby apply?
Inspired by this [SO question](http://stackoverflow.com/questions/20875140/apply-function-to-sets-of-columns-in-pandas-looping-over-entire-data-frame-co), I was wondering if the possibility of being able to give an axis keyword to `GroupBy.apply` would be interesting.

An example. Considering this dataframe:

```
In [1]: idx = pd.MultiIndex.from_arrays([list('AAABBB'), list('xyzxyz')])
In [2]: df = pd.DataFrame(np.random.randn(5,6), columns=idx)
In [3]: df
Out[3]:
          A                             B
          x         y         z         x         y         z
0  1.085834 -1.247589  0.174311  1.415633  0.788986  0.443246
1  1.036490  0.223306 -0.920102  0.068396  1.577690 -0.757387
2 -0.587843 -1.223218 -0.153409  1.863440  2.169254  0.282485
3  1.485550  0.494427 -0.257822  1.360076 -0.049386 -0.264166
4  0.232604 -0.972644  0.877186 -0.875215  1.198826 -0.370832
```

and then groupby the first level of the columns (`A` and `B`): 

```
In [4]: g = df.groupby(axis=1, level=0)
```

On the individual groups of `g`, you could do a following apply (to calculate the length of the vector (x,y,z)):

```
In [5]: df['A'].apply(lambda x: np.sqrt(x**2).sum(), axis=1)
Out[5]:
0    2.507734
1    2.179897
2    1.964471
3    2.237799
4    2.082434
dtype: float64
```

However, to do this on all groups, you need a second apply inside the apply to provide the axis keyword:

```
In [6]: g.apply(lambda g: g.apply(lambda x: np.sqrt(x**2).sum(), axis=1))
Out[6]:
          A         B
0  2.507734  2.647866
1  2.179897  2.403474
2  1.964471  4.315179
3  2.237799  1.673628
4  2.082434  2.444873
```

Would it be a interesting enhancement that you could directly provide this keyword like this?

```
g.apply(lambda x: np.sqrt(x**2).sum(), axis=1)
```

Or Is there another way I am missing to simply do this?
