(Collections) Initial collections work

Initial collections work.

TODO:

* Take care of some TODO's in the code
* Self-review
* Activity
* Searching collections (search permission integration is complete though)
This will make the collection a member of the content item which I understand is necessary to rebuild collection libraries/permissions. However, when retrieving the members of the content item, the collection will be part of that set of members. (ATM, this breaks the content members endpoint as it only expects existing principals to be returned)

Given that we don't need to nest collections, can you explain again why we need to re-use the groups identifier? We would at least be able to differentiate between the resources that have been given access to the content item if the identifier was not `g.