Separated DialServiceImpl's socket logic into a separate class DialSocket.
A DialSocket object represents a socket bound to a network interface. It invokes callbacks when a discovery request was made, a device was discovered, or when socket error occurred.
DialServiceImpl manages multiple DialSocket objects, with callbacks back to DialServiceImpl to notify observers.
TODO in next patch: Fix 300113 to bind a socket to all IPv4 and IPv6 network interface, and discover devices on each of them.
BUG=300113
Review URL: https://codereview.chromium.org/
114293003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240982 0039d316-1c4b-4281-b951-d872f2087c98