Support for group expression nesting

Here's support for nested group expressions. Map nesting is especially useful for me (and I recollect someone else asking for it) but there is support for nested set and list as well. Tests for maps are included. 

I had to make a small non-backwards compatible change to GroupBy interface in order to make proper use of the new features, but this should not be a problem. Already compiler code will continue working thanks to Kohsuke's bridge method annotation library and it's clever bytecode mutilation plugin. I also made some of the generics more specific but that won't cause such bytecode incompatibilities.

My original idea was to partition collections though simple arithmetic operations (count().divide(PARTITION_SIZE).floor()) thus the support for lists and sets but I never got around to actually implement it when I realized that calculations would tightly involve collections subproject (or some other that understands basic java) which I'm not familiar of.