Add groupby feature

Add groupby feature and the test case
The `GroupBy` function return a `map[interface{}][]interface{}`