add basic groups api

Okay I'll add the check, but looking at the code, it looks like calling `new_smart_group` with `query` as `None` will have the same effect as calling `new_group`