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.

This is the current output of every serializer used for logging. Any thoughts on field names or representations?
```
DynamicInterface
{
    "container": "zone.public",
    "workgroup": "Default",
    "system": "public-d92fdd178fd58b48a4756d2661246c71-Wireless",
    "mac": "00:22:fb:43:de:50",
    "range": "Wireless registration 10.255.255.255-10.255.255.255 (186)",
    "dhcp_enabled": true,
    "expire": null,
    "last_save_user": null
}

StaticInterface
{
    "container": "zone.nacse.org",
    "mac": "00:c0:b7:97:c0:a6",
    "reverse_domain": "193.10.in-addr.arpa",
    "system": "kec1108a-ap7801-r11-2",
    "workgroup": "Default",
    "dhcp_enabled": true,
    "dns_enabled": true,
    "ip": "10.193.50.62",
    "last_save_user": null,
    "description": "",
    "expire": null
}

Network
{
    "vlan": "IS:VideoNET",
    "site": "Campus",
    "vrf": "Legacy",
    "ip_type": "4",
    "network_address": "128.193.11.0/26",
    "enabled": true,
    "dhcp_config_extras": "",
    "last_save_user": null
}

Range
{
    "name": "",
    "network": "128.193.0.0/27",
    "range_type": "static",
    "ip_type": "4",
    "start_address": "128.193.0.4",
    "end_address": "128.193.0.31",
    "domain": "nws.oregonstate.edu",
    "is_reserved": false,
    "allow": "l",
    "dhcpd_raw_include": "",
    "dhcp_enabled": true,
    "description": "",
    "allow_voip_phones": true,
    "last_save_user": null
}

Vlan
{
    "name": "COB-SBNT76",
    "number": 76,
    "last_save_user": null
}

AddressRecord
{
    "label": "",
    "domain": "itnsecure.orvsd.org",
    "ip_address": "128.193.4.38",
    "last_save_user": "test_superuser",
    "ttl": 3601,
    "description": "Testing."
}

CNAME
{
    "label": "www",
    "domain": "emt.orst.edu",
    "target": "www.orst.edu",
    "last_save_user": null,
    "description": "",
    "ttl": 3600
}

Domain
{
    "name": "arpa",
    "master_domain": null,
    "soa": "None",
    "is_reverse": true,
    "dirty": false,
    "purgeable": false,
    "delegated": false,
    "last_save_user": null
}

MX
{
    "label": "",
    "domain": "nacse.org",
    "server": "relay.oregonstate.edu",
    "priority": 5,
    "ttl": 86400,
    "description": "",
    "last_save_user": "test_superuser"
}

Nameserver
{
    "domain": "10.in-addr.arpa",
    "server": "ns1.oregonstate.edu",
    "ttl": 3600,
    "last_save_user": null,
    "description": ""
}

PTR
{
    "ip_address": "199.201.139.9",
    "fqdn": "corv-car1-gw.nero.net",
    "ttl": 3600,
    "last_save_user": null
}

SOA
{
    "root_domain": "10.in-addr.arpa",
    "primary": "ns1.oregonstate.edu",
    "contact": "hostmaster.oregonstate.edu",
    "expire": 1209600,
    "retry": 86400,
    "refresh": 180,
    "minimum": 180,
    "ttl": 3600,
    "description": "",
    "is_signed": false,
    "dns_enabled": true,
    "last_save_user": null
}

SRV
{
    "label": "_test2",
    "domain": "2wow.oregonstate.edu",
    "target": "testing",
    "port": 8420,
    "priority": 2,
    "weight": 2,
    "ttl": 3600,
    "description": "Hi!",
    "ctnr": "zone.baf",
    "last_save_user": "test_superuser"
}

SSHFP
{
    "label": "test_sshfp",
    "domain": 493,
    "key": "5bf1ad927dfb8679496a2e6cf00cbe50c1c87145",
    "algorithm_number": 1,
    "fingerprint_type": 1,
    "ttl": 3611,
    "description": "Junk SSHFP for testing",
    "ctnr": "zone.baf",
    "last_save_user": "test_superuser"
}

TXT
{
    "label": "test_txt",
    "domain": "2wow.oregonstate.edu",
    "txt_data": "test data",
    "ttl": 3600,
    "description": "?",
    "ctnr": 10,
    "last_save_user": "test_superuser"
}
```
Import from `cyder.settings`, not `cyder.settings.local`.