fixes bug 1072460 - Audit trail for all changes in admin

@AdrianGaudebert r? 
cc @lonnen 

I'm sorry for the size of this. In hindsight I should have made a PR just for adding the log entries and then make another PR for viewing the events. However, I think like this you'll be better able to test it and get a feel for what it does. 

To test, check out the branch, run `./manage.py syncdb`, `peep install -r requirements.txt` and then go to the admin. Edit some groups and users. And possibly some super search fields. Then go to `/admin/events` and they should appear there. 
No good reason. 
What I really should do is `event, = Log.objects.all()` because that achieves two things:
* gets the `event` element out
* asserts that there is exactly one item returned in the `.all()`

However, the only difference is that I generally like the idea of the querysets being "array like". Maybe I'm just old school and like SQL. In SQL you can only do `LIMIT 1 OFFSET 0` and that still gives you an array of record sets. 

Also, maybe I just like that `event, = ...` looks cool because it's such a unique and powerful feature of Python. (Go has this too but not as nice as Python's)

I'll have another look to see if I can drop the `[:1]` excess in a couple of places.