Creating the network bridge device when docker starts up

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
5. Create the docker bridge device

Eventually we can add in intelligent network selection for the docker bridge.
Clean up network bridge if setup fails during device creation
Refactoring bridge functions to use struct methods