On Mac OS X, mDNSResponder now runs with user-ID and group-ID
"_mdnsresponder". In order to perform certain privileged operations, a
helper (unimagintively called mDNSResponderHelper) runs as root when
needed and handles requests from mDNSResponder.


* A new LaunchD job com.apple.mDNSResponderHelper starts
  mDNSResponderHelper on demand.  The helper exits after approximately
  10 seconds of idle time.

* The com.apple.mDNSResponder LaunchD job specifies the account under
  which to run, so that mDNSResponder starts as _mdnsresponder.  When
  run as root--- e.g. from the command line with `sudo'---
  mDNSResponder drops privileges itself.

* A subdirectory named "mdns" and owned by _mdnsresponder has been
  created in /var/run.  The PID file and uDNS server socket has been
  moved to that subdirectory.

* There are currently six remote procedure calls handled by
  mDNSResponderHelper: mDNSDynamicStoreSetConfig,
  mDNSPreferencesSetName, mDNSKeychainGetSecrets,
  mDNSConfigureServer, and mDNSAutoTunnelSetKeys

* mDNSDynamicStoreSetConfig allows mDNSResponder to set the
  MulticastDNS, PrivateDNS, or DynamicDNS configurations.

* mDNSPreferencesSetName allows mDNSResponder to set the computer name
  or local host name, and displays a notification if there was a
  conflict.

* mDNSKeychainGetSecrets causes mDNSResponderHelper to collect DNS
  keys from the system keychain.  SetDomainSecrets uses the result to
  populate AuthInfoList.  One could refactor this code further so that
  mDNSResponderHelper performs all the cryptographic operations, with
  the result that a compromise of mDNSResponder does not compromise
  keys.  But I think that may be more change than is advisable at this
  point.

* On the advice of the Security.framework team, I've used
  SecKeychainSetPreferenceDomain to ensure that the system keychain is
  references whenever a NULL SecKeychainRef is used.  Wherever a
  SecKeychainRef is needed, NULL is now specified.

* mDNSConfigureServer, and mDNSAutoTunnelSetKeys do various setup and
  teardown for BTMM.
