Adds Python 3.x support in metadata services

Replaces urllib2 usage and adds other Python 3.x related fixes
Adds Python 3.x support in DHCP module

Mostly changes related to bytes and str Python 2 / 3 incompatibility.
Adds Python 3.x support in utils network module

Replaces urllib2 usage with the six equivalent.
Replaces reload() and __builtin__ for Python 3.x

Uses "six.moves.reload_module" and "six.moves.builtins"
Uses six.StringIO for Python 3.x support

Replaces StringIO usage in userdata module.