Refactored bridge device creation to check for conflicts with existing devices

If the docker bridge device doesn't exist yet the following occurs:

1. All interfaces are enumerated
2. Each interface address is parsed into an IP and mask
3. Any ipv6 addresses are ignored
4. If the docker bridge network range conflicts with the mask of an
   existing device then docker bombs out

Eventually we can add in intelligent network selection for the docker bridge.