Refactor acl system

## Refactor the 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. There are a couple of reasons for moving the ACL code into it's own Django app. The main reasons is testability and code reuse.

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.

There are a couple of Auto generated SQL schema migration files in this CL, these can be ignored as usual.

@joachimmetz for code review.
@onager and @kiddinn for visibility.

This is Django ORM stuff, it automatically sets the field in the database to datetime.datetime.now() when the database object is first created. See: https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.DateField.auto_now_add