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.

Style nit: I opt not to use "Function" in the docstring, it's adds no value, just write (or equiv):
Determines if the ACL is open to everyone for a specific object.