CXX-186 Add group command helper

Adds the ability to use the group command in a convenient way.

The `group` method takes a key object where as the `groupWithKeyFunction` method takes a key function.
ns.toString() rawData is not required to return a pointer to a null-terminated region.