Clean up tests

**Resolves issue #733** for stupid reasons.

---

## Relatively major changes

- [x] Remove `safe_save` and `safe_delete`; use `cyder.base.utils.transaction_atomic` and manual calls to `full_clean` instead. (`safe_save` and `safe_delete` did nothing more than obfuscate things, and `safe_save` did nothing to prevent people from forgetting to use it in new `save` methods.)
- [x] Eliminate unnecessary `ensure_domain` and `ensure_label_domain` calls (i.e. almost all of them). Use `Domain.create_recursive` instead if that's useful.
- [x] Factor out common DNS test setup.
    - Include the stuff in `cyder.cydns.tests.utils.create_basic_dns_data`.
    - Possibly create a DNS base test if most DNS test classes need the same initial data.
- [x] Factor out a reverse domain creation function.
- [x] Add a `Domain.create_recursive` class method and use it where appropriate.

## Relatively minor changes

- [x] Ensure rough PEP8 compliance.
- [x] Wrap lines to 79 chars.
- [x] Replace `x = X(...); x.save()` with `x = X.objects.create(...)` where appropriate.
- [x] Replace `field = value; X.objects.create(field=field)` with `X.objects.create(field=value)`.
- [x] Use keyword arguments instead of unpacking a dictionary defined in the same function. I don't know how on earth a Python developer could get by without knowing about keyword arguments. Hopefully they do now.
- [x] Use `CyTestMixin.assertObjectsConflict` and `CyTestMixin.assertObjectsDontConflict` where appropriate.
- [x] Clean up IP–reverse domain conversion functions.
- [x] Remove test utilities that add layers of indirection without saving many lines of code, *especially* when they're often used unnecessarily.
- [x] Fix miscellaneous spelling and grammar mistakes.
- [ ] Fix `Network.get_related_sites`.