Create an audit log for objects

This branch should be mostly complete by now. I'm working on some minor changes to improve the readability of the logs, mainly in cases where the name of an attribute differs significantly from the label shown in the UI. There are also some weird potential bugs that I'm trying to sort out.