New ACL system

## New ACL system
Moving to GenericRelations in Django to make a more generic ACL implementation. The AccessControlEntry (ACE) can be added to any other model class. The benefit of this is reuse of code and cleaner implementation.

The permission model is simple:
* Read, Write, Delete
* As owner of the object you get RWD permissions by default. You can then add other users as collaborators and set their permissions individually.
* We also implement public/private access by setting a ACE with user None and with permission Read.

@joachimmetz Let's try out the workflow here. The idea is that you LGTM in a comment when you are happy with this pull request. About the actual code, I know there are a lot of Django specific magic going on.. but we can chat about it when we meet.
Personal preference:
user. user object (instance of django.contrib.auth.models.User)