Zone update v2
Upgraded zone_update code to build the resulting zone on-the-fly using the apply_ functions. This mimics the changeset application that would normally happen at the commit phase. The advantages are:
- can fail right away during addition/removal instead of during commit
- saves lots of memory by not synthesizing nodes
- discards lots of duplicate code and simplifies other; primarily only zone_update addition and removals are more complicated.
- makes the apply_ functions more generic, robust
Only disadvantage I can think of is that the complexity of changesets, zone contents, pointers, nsec chains, etc. makes it difficult to consider whether the code is correct. It requires more testing over CTL, but it mostly should work very well considering all code used now was used before. Also the ddns/basic test is pretty extensive, making at least some guarantee of correctness.