The incremental update change made NS record updates work for non-glue NS
records, but broke `ensure => absent` because there is no semantic guarantee
that the contents of the `data` member match what's in DNS. Set math ensures
that hilarity ensues.
Both the guts of the PuppetBind::Provider::Nsupdate module and the type method
of the dns_rr(nsupdate) provider produce and expect the type expressed as a
string, but the resource_record(nsupdate) provider's type method produces
symbols. This accidentally worked for a while, then it didn't. Also, in
quoted_type? that's supposed to be an array of strings, not a quoted string.
Compute the adds and deletes required to get from existing RRData to new RRData
and perform just those operations instead of doing a complete drop/add of the
entire RRData set. Also during an update, do adds before deletes. This
eliminates the existence gap and fixes#29
Abstract out the nsupdate provider logic and implement a new resource_record
type around it which applies no semantic value to its title.
Also: support SPF and TXT records, include isrequired on required parameters
(though it doesn't seem to work as advertised)