Move FieldPermissions and Roles into "audit.py"

Since these two models are more related to audits than the main program
logic, it seems to make more sense to put them here instead.
Hook up pending system for writes

Whenever a user with "write with audit" privileges attempts to
write a field:
1. The write will not throw any sort of exception
2. The field on the model will be rolled back to the original
   value
3. An audit with will be created with a "requires_auth" flag set
   to true, signifying that this audit represents a pending action

A future commit will add the ability to query and apply the pending
audits