PERF faster head, tail and size groupby methods
Try again with #5518.

Massive gains in groupby head and tail, adds more tests for these, slight speed improvement in size (not as much as I'd hoped, basically iterating through grouper.indices is slow :( ).

_As mentioned before, I added a helper function to prepend as_index to index (if that makes **any** sense), I think it could be faster, and also using it in apply may fix some bugs there..._

@jreback I fixed this up. A slight api change is that head now respects original frame order (it doesn't if you do an apply).
 can you add some tests where the groups vary in size and where the number you are asking for (e.g. head(3)) is > than the number in some/all groups.
 Added tests for <=0 and > max group size. One already for between group sizes.

(though it's a small example, I think it covers...)
 Added some comments to the docstrings.

I have another question regarding the docstring style:
- You changed the `"""` to ``'''`. Is this recommended, or is there some 'policy' on this in pandas? Because I always use `"""` (and this is also used in PEP8: http://www.python.org/dev/peps/pep-0008/#documentation-strings).  
  It doesn't matter at all for me what we use, but maybe we should try to be consistent, and I had the impression that `"""` is used the most in the pandas source code
 @jorisvandenbossche  Thanks for comments, will update.
 Fixed these. Mentioned the ascending arg to cumcount, which I've purposely made kwarg only for now.

_Noticed a weird related thing with nth on a DataFrame (it just doesn't work, and is kinda undefined), will make sep issue though._ #5552
