Fix models and validation so migration works; fix migration so DHCP builds work; add `dhcp_build` command; make builds accurate

There are a lot of things in this branch. Sorry about that. It was largely unavoidable because there are so many feature dependencies.

---

This branch is not ready for merge until all of the following boxes have been checked.

- [ ] Verify that model, validation, and migration changes don't break unrelated things
- [ ] Duplicate the DHCP config that Maintain generates as closely as possible, possibly by temporarily restricting Cyder's scope
- [ ] Improve on Maintain's DHCP shortcomings
- [ ] Write tests for builds (<em>clarification needed</em>)

---

Differences reported by [dhcpd_compare][1] as of selected commits:

`b9725f0`: 658788
`b2ca93e`: 656702
`d9cf03a`: 657255

[1]: https://github.com/drkitty/cyder/compare/dhcpd_compare2