Add support for dynamic updates (RFC2136)

Implementation of #18. This is still WIP and the commits need cleaning up, but progress is steady.

- [x] Support for TSIG shared secrets for _per zone_ authentication
- [x] Support for atomic updates (all updates and prerequisites are locked for the duration of the request)
    - [x] Also works across multiple nameservers for high availability setups (+1 etcd)
- [ ] Support for prerequisites
- [ ] Support for all types of DNS updates
- [ ] Test cases for the various updates and prerequisites supported
- [ ] Documentation
Yeah, I only just came across all of the domain label splitting functions earlier for [this](https://github.com/duedil-ltd/discodns/pull/31/files#diff-f95b90ef55d85a0b7c5b79dbf4d8c323R20). Will update them all! Thanks.