Apply anchor pattern

This both simplifies the dependencies and refreshes between classes, as well
as doing the right thing when an external module depends on the outer
`Class['dnsmasq']`.

http://docs.puppetlabs.com/puppet/2.7/reference/lang_containment.html#workaround-the-anchor-pattern
Ability to soft-restart for some config changes

A select few files can be reloaded without restarted the dnsmasq process.
This class can be notified on such changes.
Default configurations for a dnsmasq server

Some sensible defaults for dnsmasq as an internal authoritative and caching
server.
A/CNAME records, and IP aliases, for ::server

Per class documentation. A change to the `hosts(5)` file triggers a reload,
rather than a restart, of dnsmasq.
Bump stdlib dependency to 3.x

In order to support Puppet 3.x
dnsmasq::client as a loopback resolver

Allow dnsmasq to be run in a "client" configuration, as is the default of
Ubuntu's NetworkManager on desktops nowadays. This is beneficial because:

1. It can provide some safety from upstream failures. dnsmasq will cache
  records for a period of time. It also won't hang in quite the
  unpredictable way that glibc does.
2. It will reduce the chatter of repeated queries for the same resource.
  Such as an application looking up the database hostname on every web
  request.
Import Ubuntu 12.04 stock /etc/default/dnsmasq

For later modification.
Expose IGNORE_RESOLVECONF param in Debian SysV

This tells dnsmasq to ignore the resolvconf hooks and read the resulting
`/etc/resolv.conf` directly instead. It should poll for changes.
Prevent ::client and ::server on same node

The two configurations are conflicting. Although there might be some room to
more common options to a single file/class.
Don't parse /etc/hosts for dnsmasq::server

This can resulting in conflicting A records for the server. Especially if it
has more than one interface. Treat `addn-hosts` as the source of truth
instead.