* move error-related code for groups to its own file
* update group avatar logic
remove unused/duplicate logic
* update `FindGroupsOptions.ToConds()`
allow passing `-1` as the `ParentGroupID`, meaning "find matching groups regardless of the parent group id"
* add `DedupeBy` function to container module
this removes duplicate items from a slice using a custom function
* add `SliceMap` util
works like javascripts's `Array.prototoype.map`, taking in a slice and transforming each element with the provided function
* add group service
functions included so far:
- avatar uploading/deletion
- group deletion
- group creation
- group moving (including moving item inside a group)
- group update
- team management
- add team
- remove team
- update team permissions
- recalculating team access (in event of group move)
- group searching (only used in frontend/web components for now)