feat(interfaces): Adding support for interfaces file

This adds the ability for cloudinit to parse a debian interfaces
file and generate the coresponding networkd configs. This still
needs a lot of work to support more configuration options.
feat(config-drive): Adding support for reading user-data from config-drive

The -config-drive flag tells cloudinit to read the user-data from
within the config-drive (./openstack/latest/user-data).
refactor(userdata): Moving userdata processing into a function
feat(convertNetconf): Adding support for network config conversion

Adding the flag -convertNetconf which is used to specify the config
format to convert from (right now, only 'debian' is supported).
Once the network configs are generated, they are written to
systemd's runtime network directory and the network is restarted.
fix(logging): Replaced logging calls with simple prints

Calling log.Fatal*() was causing cloudinit to bomb out even if
errors were to be ignored. Since the logging flags were cleared out
anyway, using fmt.Print*() is a lot simpler.

Additionally, handle the failure to initialize the workspace.
add(netlink): import dotcloud/docker/pkg/netlink
fix(netlink): use the netlink package instead of system()
fix(panic): replacing panic with an error
fix(InterfaceGenerator): make function names more succinct
fix(interface): replace empty interface with InterfaceGenerator
test(interface): Initial tests for PhysicalInterface, BondInterface, and VLANInterface
fix(vlan): Update VLAN parsing to support alternate naming schema

Moved the VLAN ID parsing into the stanza processing. Added support
for vlan[0-9]* parsing.
refactor(raw,slaves): Move parsing for raw devices and bond slaves
fix(bond): Fix bug in bond heirarchy generation

Setting bond1 to enslave bond0 resulted in a generated config where
bond1 enslaves itself. No good.
test(interface): Add tests for interface parsing
fix(errors): Export error types and make parsing more robust
test(stanza): Add tests for stanza parsing

This adds a number of tests for the stanza functions. These tests
should be exhaustive.
test(network): Add tests for top-level network functions

This adds exhaustive tests for the functions in network.go.
test(network): Enable tests for network package
feat(dhcp): Add proper support for DHCP

Refactored the Network() generators into a shared generator. Now
each of the interfaces can generate the same .network configs.