[WIP] Create initial version of ByPropertyIdGrouper

This is some initial idea to fix #190. It aims to be a lightweight alternative to `ByPropertyIdArray` by not providing any editing methods but only indexing and querying the data.

### TODO
* Finish tests
* Use in #198
It is hard to find out what the intent behind each argument list is. Can you make dedicated methods instead?