Group by: split slice into two groups, applies on each slice element a
predicate func to categorize this element.
Changes
* Add groub by func
* Add test case for this func
IntSlice and StringSlice: preallocate memory up front for output slice.
Instead returning a error throw a panic because most likely it's a
programming error.
Contain: rename slice to iterableType and add default case for type
mismatches